我试图将同一个表中的4个字段与一个表连接两次。我尝试使用两个左连接和两个WHERE语句,如下所示。目前我还没有得到g2.address,g2.latitude,g2.longitude,g2.method的任何结果。我不确定我是不是做错了声明,或者只是其他一些与我的数据相关的明显错误。任何帮助都将不胜感激。
第一次尝试:
SELECT p.q_id, p.first_name, p.surname, p.gender, p.age, p.race,
p.q2_7, p.q2_8_1, p.q2_8_2, p.q2_8_3, p.q2_8_4, p.q2_8_5,
p.q2_8_6, p.q2_8_7, p.q2_8_8, p.q2_9, p.q2_10, p.q2_11,
p.q2_11_1_1, p.q2_11_1_2, p.q2_11_1_3, p.q2_11_1_4,
p.q3_1, p.q3_2, p.q3_2_1, p.q3_3, p.q3_4, p.q3_5,
g1.address, g1.latitude, g1.longitude, g1.method,
p.q3_7, p.q3_8, p.q3_9, p.q3_10, p.q3_11_1, p.q3_11_2,
p.q3_11_3, p.q3_12, p.q3_13, p.q4_1,
g2.address, g2.latitude, g2.longitude, g2.method,
p.q4_3, p.q4_4, p.q4_5, p.q5_0_1, p.q5_0_2, p.q5_0_3,
p.q5_1, p.q5_2, p.q5_3
FROM people AS p
LEFT JOIN gmap_address_list AS g1 ON p.q3_6 = g1.id
LEFT JOIN gmap_address_list AS g2 ON p.q4_2 = g2.id
GROUP BY p.q_id
第二次尝试
SELECT p.q_id, p.first_name, p.surname, p.gender, p.age, p.race,
p.q2_7, p.q2_8_1, p.q2_8_2, p.q2_8_3, p.q2_8_4, p.q2_8_5,
p.q2_8_6, p.q2_8_7, p.q2_8_8, p.q2_9, p.q2_10, p.q2_11,
p.q2_11_1_1, p.q2_11_1_2, p.q2_11_1_3, p.q2_11_1_4, p.q3_1,
p.q3_2, p.q3_2_1, p.q3_3, p.q3_4, p.q3_5,
g1.address, g1.latitude, g1.longitude, g1.method,
p.q3_7, p.q3_8, p.q3_9, p.q3_10, p.q3_11_1, p.q3_11_2,
p.q3_11_3, p.q3_12, p.q3_13, p.q4_1,
g2.address, g2.latitude, g2.longitude, g2.method,
p.q4_3, p.q4_4, p.q4_5, p.q5_0_1, p.q5_0_2, p.q5_0_3,
p.q5_1, p.q5_2, p.q5_3
FROM people p, gmap_address_list g1, gmap_address_list g2
WHERE p.q3_6 = g1.id AND p.q4_2 = g2.id
ORDER BY p.q_id
最佳答案
如果不了解p.q3ö6和p.q4恚2是如何填充的,就很难猜测为什么您的第二个左加入可能不匹配任何内容。但是,查询的结果集中确实有一些重复的列名;这可能会妨碍在php中加载数组。您可以尝试以下操作:
SELECT ... ,
g1.address AS g1_address, g1.latitude AS g1_latitude,
g1.longitude AS g1_longitude, g1.method AS g1_method,
... ,
g2.address AS g2_address, g2.latitude AS g2_latitude,
g2.longitude AS g2_longitude, g2.method AS g2_method,
...
注意,您的第二个查询:不适合左连接。坚持第一个。
关于php - 左联接两次形成同一张 table ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12449708/