我有一个咨询预约网站。目前,我在一个表中列出客户,但在第二个表中按ID列出了夫妇,以供他们预订情侣会议时使用。即:
client
id_no first last
564 John Smith
983 Mary Jones
999 Mark Fields
882 Joan Hancock
couple
id_no client1 client2
623 564 983
555 999 882
我想使用别名编写单个select语句,该语句将在单行中列出夫妇。到目前为止,我一直在进行简单的联接,然后在运行查询后使用php清理结果,但是我想在sql中清理结果,以便得到类似以下的结果
id_no first_1 last_1 first_2 last_2
623 John Smith Mary Jones
555 Mark Fields Joan Hancock
我怀疑可能涉及子查询,但是我一生都无法纠缠它们以获得此结果。
更新 我只是尝试了以下方法:
SELECT id_no,first_1,last_1,first_2,last_2
FROM ( SELECT a.id_no AS id_no, b.first AS first_1,b.last AS last_1
FROM couple AS a, client AS b WHERE a.client1=b.id_no ) c1
JOIN ( SELECT a.id_no AS id_no, b.first AS first_2,b.last AS last_2
FROM couple AS a, client AS b WHERE a.client2=b.id_no ) c2 ON
(c1.id_no=c2.id_no)
并且收到消息“字段列表中的列'id_no'不明确”。不确定我走的路是否正确
答案 0 :(得分:0)
由于未为id_no
指定表别名,因为该列属于两个表,因此您将得到异常,因此SQL不确定返回哪一列,因此将引发歧义的列错误。
此外,您不必使用子查询,只需将客户端表与一对表连接两次,一个用于client1,另一个用于client2,如下所示
Select cp.id_no,
cl1.first as first_1,
cl1.last as last_1,
cl2.first as first_2,
cl2.last as last_2
From couple cp
inner join client cl1 on cl1.id_no = cp.client1
inner join client cl2 on cl2.id_no = cp.client2