2013-07-07 3 views
0

Я не уверен, почему это не работает. Если я присоединяюсь к каждой таблице отдельно, она возвращается с соответствующими результатами, но когда я пытаюсь присоединиться к ним, я получаю 0 результатов. (Car_id и boat_id являются первичные ключи на их столах.)MySQL JOIN Несколько таблиц не работают

$query = "SELECT 
      * 
     FROM    
      posted c 
      JOIN posted_car e on c.car_id = e.car_id 
      JOIN posted_boat g on c.boat_id = g.boat_id 
     WHERE 
      c.posted = 'posted' 
      ORDER BY date DESC LIMIT 0, 30"; 
     $resultBoth = mysql_query($query, $db) or die(mysql_error($db)); 

Может быть стоит отметить, что, когда я

LEFT JOIN posted_car e on c.car_id = e.car_id 
RIGHT JOIN posted_boat g on c.boat_id = g.boat_id 

Я получаю результаты, как если бы я только присоединился к таблице posted_boat. Если бы кто-нибудь мог указать мне в правильном направлении ... это было бы очень признательно.

+0

@YotamOmer Это сокращение для создания псевдонима в MySQL. @noWayhome Я бы предположил, что 'posted.car_id' и' published.boat_id' вряд ли будут одновременно не -NULL'. Это правда? – pickypg

ответ

2

Вы используете JOIN, что может быть проблемой. вы должны использовать левое внешнее соединение, чтобы получить правильный результат. проверьте следующий синтаксис:

$query = "SELECT * 
    FROM    
     posted c 
     left OUTER JOIN posted_car e on c.car_id = e.car_id 
     left OUTER JOIN posted_boat g on c.boat_id = g.boat_id 
    WHERE c.posted = 'posted' 
     ORDER BY date DESC LIMIT 0, 30"; 
    $resultBoth = mysql_query($query, $db) or die(mysql_error($db)); 
+0

Отлично. Спасибо :-) – noWayhome

+0

, пожалуйста, не забудьте выбрать этот асс как действительный ан, если он вам поможет. это может помочь другим. –

Смежные вопросы