2014-11-10 8 views
1

У меня есть следующие таблицы в mysql.mysql join query with many fields

фокус

focus_id focus 
1  Company 
2  Name 

events_focus

id event_id focus_id 
1 1   2 
2 1   1 
3 2   1 

события

event_id name 
1  event 
2  evemt2 

история

story_id name 
2  storyname 
3  testname 

events_story

id event_id story_id 
2   2 

и это мой запрос

SELECT `focus`.`focus_id`, `focus`.`focus`, `events`.`event_id`, `events`.`name`, `story`.`story_id`, `story`.`name` 
FROM (`focus`) 
JOIN `events_focus` ON `events_focus`.`focus_id` = `focus`.`focus_id` 
JOIN `events` ON `events`.`event_id` = `events_focus`.`event_id` 
JOIN `events_story` ON `events_story`.`event_id` = `events`.`event_id` 
JOIN `story` ON `story`.`story_id` = `events_story`.`story_id` 
WHERE `focus`.`focus` = 'Company' 

, но я получаю нулевой результат для этого.

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

+0

Значения таблиц событий событий выглядят неправильно. Либо event_id имеет значение null, либо значение history_id равно null? Предполагаю, что id - это ПК и, следовательно, значение 2, и это может быть причиной для пустого результата? – SMA

ответ

0

event_id пробел в одной строке присутствует в events_story поэтому следующий присоединиться не работает,

JOIN `events_story` ON `events_story`.`event_id` = `events`.`event_id` 

Если эти данные, как ожидается,/действительно, вы можете захотеть изменить присоединиться от JOIN к LEFT OUTER JOIN.

0

Использовать LEFT JOIN вместо JOIN. Вы узнаете, какая таблица возвращает значения NULL, т. Е. Будет вызывать 0 результатов при использовании только JOIN