Cómo escribir INNER JOIN en wpdb de WordPress correctamente

17 sept 2015, 20:50:19
Vistas: 14.4K
Votos: 1

Tengo un problema al escribir la sintaxis SQL INNER JOIN en WordPress. Esta lógica debería funcionar, lo probé en phpmyadmin y funciona correctamente

SELECT booking_calendars.cal_name
FROM booking_calendars 
INNER JOIN booking_reservation 
ON booking_calendars.id = booking_reservations.calendar_id
WHERE status LIKE 'pending'

pero no funciona en WordPress

$pending_reservations = $wpdb->get_results(" 
    SELECT booking_calendars.cal_name
    FROM '.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN ' . $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE 'pending'");

y luego

echo "<h2>Reservaciones pendientes: </h2><br>";
        var_dump( $pending_reservations);
        if($pending_reservations>0)
        {
        foreach ( $pending_reservations as $pending_reservation ) 
        {
            echo "<label>". $pending_reservation->cal_name."</label><br>";
        }
    }else{
        echo "<label>No hay reservaciones pendientes</label><br>";
    }

Hice var_dump de $pending_reservations y devuelve array(0) { } en WordPress

3
Comentarios

¿Qué tal este? "SELECT booking_calendars.cal_name FROM {$wpdb->booking_calendars} AS booking_calendars INNER JOIN {$wpdb->booking_reservation} AS booking_reservations ON booking_calendars.id = booking_reservations.calendar_id WHERE status LIKE 'pending'"

Mayeenul Islam Mayeenul Islam
17 sept 2015 21:00:37

¿Has intentado hacer echo de tu consulta para ver qué se está generando? Mi suposición es que está intentando consultar contra una tabla wp_booking_calendars ya que estás agregando $wpdb->prefix

czerspalace czerspalace
17 sept 2015 21:11:12

@czerspalace ese es un buen punto :)

Mina Ragaie Mina Ragaie
17 sept 2015 21:16:56
Todas las respuestas a la pregunta 1
0

gracias por tu tiempo y gracias a @czerspalace Comencé la consulta con comillas dobles y luego la separé con comillas simples y después de ver la salida del echo encontré que no había espacios entre From y nombre_de_la_tabla

esta es la forma correcta

$pending_reservations = $wpdb->get_results(' 
    SELECT booking_calendars.cal_name
    FROM '.$wpdb->prefix.'booking_calendars AS booking_calendars
    INNER JOIN '. $wpdb->prefix.'booking_reservation AS booking_reservations
    ON booking_calendars.id =  booking_reservations.calendar_id
    WHERE status LIKE "pending"');
17 sept 2015 22:05:06