0

我的 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)

但这不会返回正确的记录(实际上没有),而数据应该适合查询。我的查询哪里出错了?

4

3 回答 3

1

尝试这个::

SELECT 
*  
FROM 
A
INNER JOIN B ON A.t_id=B.id

WHERE  A.type='Loading' AND B.shipid=2
于 2013-01-11T09:05:15.657 回答
0

如果您需要 A 中的所有行,那么听起来像是左连接...所以无论如何也请提供您的预期结果以确认..

SELECT A.*  FROM A
INNER JOIN B 
ON A.f_id=B.id
AND A.type='Loading' AND B.shipid=2
;

由于您有条件获取加载记录,唯一的问题是 id 与上述评论指出的不匹配..

于 2013-01-11T09:07:18.243 回答
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

于 2013-01-11T09:04:59.773 回答