2013-02-25 2 views
-1

У меня есть 4 таблицы, в которые я хочу присоединиться к одному заявлению sql.Как объединить несколько таблиц в один sql-оператор

Это мои таблицы:

  1. exp_members: card_id (рк)
  2. сделки: card_id (рк), restaurant_id (рк)
  3. exp_channel_data: restaurant_id (рк)
  4. exp_channel_titles: restaurant_id (pk)

Я уже пытался с утверждением, как это, но это не сработало

SELECT cm.*, t.*, cd.*, ct.* 
FROM exp_members as cm 
Inner JOIN transactions as t on (cm.card_id = t.restaurant_id) 
Inner JOIN exp_channel_titles as ct on (ct.restaurant_id = t.restaurant_id) 
Inner JOIN exp_channel_data as cd on (cd.restaurant_id = ct.restaurant_id) 
order by t.created DESC limit 50 
+5

Что вы подразумеваете под этим не работает? записи, которые вы видите, не являются ожидаемыми результатами? или что? –

+0

Как вы хотите, чтобы они присоединились? LEFT JOIN включает все значения из таблицы слева (например, транзакции) стороны запроса независимо от соответствия. –

+1

** «не работает» ** не описывает ожидаемое поведение и полученные результаты/ошибки – Teneff

ответ

0

Если поставить что-то вроде этого:

SELECT t.*. cd.*, ct.* 
FROM transactions as t 
LEFT JOIN exp_channel_titles as ct on (t.restaurant_id = ct.restaurant_id) 
LEFT JOIN exp_channel_data as cd on (cd.entry_id = ct.entry_id) 
WHERE t.cardid > 0 
and t.restaurant_id > 0 
and ct.status= 'open' 
order by t.created DESC limit 50 

Это даст вам что-нибудь ??? ... .. простите, но трудно найти простое решение без ваших табличных структур :)

Saludos.

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