я получил 2 таблицы, одна из моей таблицы выглядит следующим образом (пример):отношение один ко многим MySQL - получить только один много-запись
tbl1
-------------
id int PK
name string
Другой выглядит следующим образом:
tbl2
-------------
type int PK FK (tbl1.id)
langid int PK
content string
Так что я хочу: хочу получить все строки из tbl1, объединенные вместе с результатами tbl2. Но я не хочу, чтобы каждый langid добавлял результат к соединению. Так что, если tbl1 содержит такие данные:
id: 1, name: test1
id: 2, name: test2
И tbl2 содержит такие данные:
type: 1, langid: 1, content: testcontent
type: 1, langid: 2, content: testcontent2
type: 2, langid: 3, content: testcontent3
Я хочу только следующие данные:
tbl1.id: 1, tbl1.name: test1, tbl2.type: 1, tbl2.langid: 1, tbl2.content: testcontent
tbl1.id: 2, tbl1.name: test2, tbl2.type: 2, tbl2.langid: 3, tbl2.content: testcontent3
Поэтому он должен получить один результат с langid, которые существуют. Надеюсь, я объяснил это хорошо. Я попытался это:
SELECT * FROM `tbl1` INNER JOIN `tbl2` ON (`tbl1`.`id` = `tbl2`.`type`) WHERE `tbl2`.`langid` = 1
Но иногда LANGID 1 не существует, а просто LANGID 2 этим заголовком. Мне нужно получить строку tbl1 с одним результатом из tbl2.
... где 'tbl2'. 'Langid' = 1 ... ?? – zipzit
Да, забыл об этом, спасибо, что заметил. –
Я не понимаю, что вы подразумеваете под «Но иногда langid 1 не существует и просто langid 2 этим заголовком. Мне нужно получить строку tbl1 с одним результатом из tbl2». Ваш код говорит получить вывод для соединения, когда таблица №2, идентификатор языка = 1. Если этот языкID не существует, вы должны получить нулевой набор в качестве ответа. Какой результат вы получаете? Подсказка: http://sqlfiddle.com/ - ваш друг, когда вы пытаетесь задавать такие вопросы. – zipzit