【发布时间】:2017-01-09 14:55:36
【问题描述】:
我有三个表,我想从表 1 中选择 DISTINCT * 并从表 2 中选择其 vid 在表 3 中可用的那些表。
表1
id fname area price
1 ABC Mall R 1500
2 ABd Mall a 1400
3 ABe Mall f 1200
4 ABt Mall b 1000
表2
id catid cat
1 2 xy
2 2 yz
3 1 yxx
4 4 ytt
5 3 xy
表3
id vid
1 2
2 1
3 4
到目前为止我尝试过的是
SELECT * FROM Table1,Table2,Table3
WHERE
Table1.id=Table2.catid AND
Table1.id=Table3.vid;
我得到的输出
id fname area price cat
1 ABC Mall R 1500 yxx
2 ABd Mall a 1400 xy
2 ABd Mall a 1400 yz
4 ABt Mall b 1000 ytt
期望的输出
id fname area price cat
1 ABC Mall R 1500 yxx
2 ABd Mall a 1400 xy
4 ABt Mall b 1000 ytt
我想只选择一次 ID 2 的详细信息,这并不重要,它需要 cat 从 Table2“xy 或 yz”中获取。
谢谢....
【问题讨论】:
-
您可以在 cat 或 vid 上使用 max 或 min,但似乎键的强度不够有效
-
你总是可以
GROUP BY Table1.id...也许 -
今日提示:切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接。 -
@apokryfos 感谢为我工作......
-
你在什么基础上区分'xy'和'yz'作为你想为
id2获得的cat值?它们似乎同样可行。