У меня есть база данных с двумя таблицами, которые похожи на:
table1
------
Id : long, auto increment
Title : string(50)
ParentId : long
table2
------
Id : long, auto increment
FirstName : string(20)
LastName : string(30)
Zip : string(5)
table2
имеет отношение один ко многим с table1
, где многие включают ноль.
У меня также есть следующий запрос (который работает правильно, поэтому игнорируйте опечатки и тому подобное, это пример):
SELECT t1.Id AS tid, t1.Title, t2.Id AS oid, t2.FirstName, t2.LastName
FROM table t1
INNER JOIN table2 t2 ON t1.ParentId = t2.Id
WHERE t2.Id IN
(SELECT Id FROM table2
WHERE Zip IN ('zip1', 'zip2', 'etc'))
ORDER BY t2.Id DESC
Запрос находит все элементы в table1
, которые принадлежат человеку в table2
, где этот человек находится в одном из перечисленных почтовых индексов.
Теперь у меня проблема: я хочу показать всем пользователям (с их элементами , если доступно ) в списке почтовые индексы, а не только те, которые имеют элементы.
Итак, мне интересно, я должен просто сделать что-то простое с гораздо большим количеством запросов, например:
SELECT Id AS oid, FirstName, LastName FROM table2 WHERE Zip in ('zip1', 'zip2', 'etc')
foreach(result) {
SELECT Id AS tid, Title FROM table2 WHERE ParentId = oid
}
Или я должен придумать более сложный отдельный оператор SQL? И если так, могу ли я получить небольшую помощь? Спасибо!