0

SQLクエリに問題があります。

状況は次のとおりです。

AとBの2つのテーブルがあります。

表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.type = Loading、A.t_idはB.id-> B.shipid=2であるAのすべての行が必要です。これまでの私の質問は次のとおりです。

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

これを試して

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

そして、 http://www.w3schools.com/sql/sql_join.aspを検索する必要がありますSQL JOIN

于 2013-01-11T09:04:59.773 に答える
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 に答える