0

我有 2 张桌子。在表#1 中有IDotacandIDmajkaIDgolub。我需要brojgoluba从表#2 中找到与表#1 中的这 3 个字段相匹配的。

例如在表#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 中的一些字段链接到其他表

4

2 回答 2

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'
于 2013-05-23T14:24:14.683 回答
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)
于 2013-05-23T14:22:19.083 回答