Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
坚持使用mysql查询和连接_Mysql_Join - Fatal编程技术网

坚持使用mysql查询和连接

坚持使用mysql查询和连接,mysql,join,Mysql,Join,我有两张桌子。在表1中有IDotac和IDmajka和IDgolub。我需要从表#2中找到与表#1中的3个字段匹配的brojgoluba 例如,在表#1id=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_brojgo

我有两张桌子。在表1中有
IDotac
IDmajka
IDgolub
。我需要从表#2中找到与表#1中的3个字段匹配的
brojgoluba

例如,在表#1id=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中有一些字段链接到其他表中

您似乎正在找到答案的路上。是这个吗

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)
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'

我听不懂你的问题-你能试着改写一下吗?现在好多了?如果不是,我会尝试完全更改它,我认为这是不对的,因为mg_popis_golubova=Otac,它不能从mg_popis_golubova获取brojgoluba,因为我没有任何名为brojgoluba的字段,这不是我需要的