我有2张桌子。表#1中有IDotac
和IDmajka
以及IDgolub
。我需要从表#2中找到与表#1中的3个字段匹配的brojgoluba
。
例如表#1 ID = 28
(表#1)IDgolub = 1,(表#2)brojgoluba = 06557-07-681
(表#1)IDmajka = 3,(表#2)brojgoluba = 2081-01-271
(表#1)IDotac = 2,(表#2)brojgoluba = 07216-05-552
SELECT
Otac.brojgoluba AS o_brojgoluba,
Majka.brojgoluba AS m_brojgoluba,
mg_golub.ID
FROM mg_golub
LEFT JOIN mg_popis_golubova AS Otac ON (Otac.IDotac=mg_golub.ID)
LEFT JOIN mg_popis_golubova AS Majka ON (Majka.IDmajka=mg_golub.ID)
WHERE mg_popis_golubova.IDkorisnik='$ID_KORISNIK'
表#1
表#2
注意:问题在于表#2中我必须选择除brojgoluba
以外的其他信息,并且我在表#2中有一些链接到其他表的字段< / p>
答案 0 :(得分:0)
SELECT ID, brojgoluba FROM
table1, table2
WHERE
table1.Idkorystnik=1 AND table2.Idkorystnik=1 AND
(table1.IDgolub=table2.ID OR
table1.IDMajka=table2.ID OR
table1.IDotak=table2.id)
答案 1 :(得分:0)
你的回答似乎很顺利。这是吗?
SELECT Otac.brojgoluba AS o_brojgoluba,
Majka.brojgoluba AS m_brojgoluba,
Dotac.brojgoluba as d_brojgoluba,
mg_golub.ID
FROM mg_golub LEFT JOIN
mg_popis_golubova Otac
ON (Otac.IDotac=mg_golub.ID) LEFT JOIN
mg_popis_golubova Majka
ON (Majka.IDmajka=mg_golub.ID) LEFT JOIN
mg_popis_golubova Dotac
on (Dotac.IDmajka=mg_dotac.ID)
WHERE mg_popis_golubova.IDkorisnik='$ID_KORISNIK'
或者,您可能希望按where
子句筛选所有匹配的表。您应该在on
子句中执行此操作,这样您就不会丢失任何行:
SELECT Otac.brojgoluba AS o_brojgoluba,
Majka.brojgoluba AS m_brojgoluba,
Dotac.brojgoluba as d_brojgoluba,
mg_golub.ID
FROM mg_golub LEFT JOIN
mg_popis_golubova Otac
ON Otac.IDotac=mg_golub.ID and and Otac.IDkorisnik='$ID_KORISNIK' LEFT JOIN
mg_popis_golubova Majka
ON Majka.IDmajka=mg_golub.ID and Majka.IDkorisnik='$ID_KORISNIK' LEFT JOIN
mg_popis_golubova Dotac
on Dotac.IDmajka=mg_dotac.ID and Dotac.IDkorisnik='$ID_KORISNIK'