Я пытаюсь получить следующий запрос, чтобы вернуть правильную информацию, но он возвращает различное количество значений для полей из одной таблицы.MYSQL/PHP: запрос с несколькими объединениями
Моя схема данных 3 таблицы:
airlines
id|descript|userid
travelers
id|airid|ftrav|ltrav|active
travair
id|travid|airid
Вот запрос:
SELECT a.id as `aid`,a.descript,userid,
group_concat(t.id) as `tids`,
group_concat(t.ftrav) as `ftravs`,
group_concat(IFNULL(t.ltrav,'')) as `ltravs`,
group_concat(t.active) as `tactives`,
ta.airid
FROM airlines `a`
LEFT JOIN travair `ta`
ON a.id = ta.airid
LEFT JOIN travelers `t`
ON ta.travid = t.id
WHERE a.userid='$userid'
GROUP BY a.id
В принципе, я пытаюсь запросить таблицу авиакомпании, чтобы получить авиакомпании, но и тянуть путешественник для каждого авиакомпаний через таблицу ta, которая соединяет их.
Однако поля group_concat имеют в них различное количество значений. В фактической таблице я в значительной степени устранил недостающие значения, чтобы не учитывать различия в количестве элементов. Кажется, что-то не так с запросом.
Может ли кто-нибудь указать мою ошибку? С этим боролись пару дней.
необходимо увидеть некоторые данные, чтобы это исправить –
Каков ваш прецедент для такой конкатенации? Это не похоже на то, что вы делаете какую-либо реальную агрегацию здесь, и вам все равно придется разложить полученное значение строк в приложении, чтобы работать с отдельными значениями. Почему бы просто не зачитать полный набор записей и агрегат в приложении в соответствующую структуру данных? –
В фактических данных для одной конкретной авиакомпании, я получаю 57 путешественников, но только 33 ftrav значения. Насколько я знаю, все эти траверлериды связаны с значениями ftrav и ltrav. Я пытался разобрать их по одному, чтобы выяснить, что происходит, но есть тысячи путешественников и много авиакомпаний. – user6631314