我的SQL查询有问题。
情况如下:
我有两张桌子,A和B.
表A:
---------------------------------------------
*| A.id | A.t_id | A.f_id | A.type |*
---------------------------------------------
| 1 | 32 | 3 | Loading |
| 2 | 34 | 5 | Discharge |
| 3 | 32 | 3 | Discharge |
---------------------------------------------
表B:
-----------------------
*| B.id | B.shipid |*
-----------------------
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
-----------------------
我需要来自A的所有行,其中A.type = Loading,A.t_id是B.id - > B.shipid = 2和。到目前为止,我的查询是:
SELECT * FROM A, B WHERE (A.type='Loading' AND B.shipid=2 AND A.t_id=B.id)
但是这不会返回正确的记录(实际上没有),而数据应该适合查询。我的查询在哪里出错了?
答案 0 :(得分:1)
试试这个::
SELECT
*
FROM
A
INNER JOIN B ON A.t_id=B.id
WHERE A.type='Loading' AND B.shipid=2
答案 1 :(得分:0)
试试这个
SELECT * FROM A a JOIN B b ON a.t_id = b.id WHERE b.shipid = 2 AND a.type = 'Loading'
-- a and b are aliases for A and B. If you have any bigger table names, it's useful
您应该查找SQL JOIN
http://www.w3schools.com/sql/sql_join.asp
答案 2 :(得分:0)
如果您需要A中的所有行,那么它听起来像是左连接...所以请提供您的预期结果以确认..
SELECT A.* FROM A
INNER JOIN B
ON A.f_id=B.id
AND A.type='Loading' AND B.shipid=2
;
由于您有条件获取加载记录,唯一的问题是该ID不符合上述指出的评论..