1

複数のテーブルからデータを収集するクエリを作成しています。1 つのテーブルからすべてを取得し、item_idsそれに基づいて他のテーブルから他のデータを収集して結果を作成したいと考えていitem_idます。これは可能だと断言できたでしょう。しかし、私はそれを機能させることができないようです。これが私がやろうとしていることの例です:

SELECT item_id AS mainID, 
 (SELECT anotherField 
  FROM anotherTABLE 
  WHERE item_id=mainID) 
FROM theMainTable;

確かにこれは単なる例です。基本的にitem_id、サブクエリ内のメイン クエリからを使用する必要があります。以前にやったことがあると断言できたのですが、どうやってやったのか思い出せません...

追加のプログラミング言語ではなく、クエリだけでこれを実行しようとしています。最終的にはストアドプロシージャとして設定したいと思います。ありがとう、またはこれに関する支援。

アップデート

結合が機能したように見えます...すべての支援に感謝します。

他の誰かがこのようなことに遭遇した場合に備えて、これが私の最終的なクエリです。

SELECT DISTINCT
    Q.item_id, Q.timestamp, Q.employee,
    QA.employeeNotes, Q2.itemDesc, Q2.itemExtraData
FROM 
    itemLog Q 
LEFT JOIN 
    itemComments QA ON Q.item_id = QA.item_id 
LEFT JOIN 
    itemLog Q2 ON Q.item_id = Q2.item_id AND Q2.type = 'begin' 
WHERE 
    Q.verb = 'itemStatus' 
    AND NOT (QA.employeeNotes IS NULL);
4

6 に答える 6

1

2つのテーブルを結合します。これが、キーがある理由です。

SELECT table_x.id, table_y.another_field
FROM table_x
INNER JOIN table_y ON table_x.id = table2.x_id;
于 2012-06-22T14:36:45.607 に答える
1

あなたは使用する必要があります

SELECT mt.itemID AS mainID, at.anotherField
FROM theMainTable mt INNER JOIN anotherTABLE at
ON mt.itemID = at.item_id
于 2012-06-22T14:32:59.687 に答える
1
SELECT a.item_id AS mainID, b.anotherField 
FROM theMainTable a
    INNER JOIN anotherTABLE b ON a.item_id=b.item_id

selectステートメントでサブクエリを使用することは避けてください。サブクエリはメインテーブルから返された行ごとに計算されるのに対し、内部結合は適切な最適化とテーブルパスを保証します。

于 2012-06-22T14:33:21.960 に答える
1
SELECT themaintable.item_id AS mainID, 
       anothertable.anotherfield 
FROM   themaintable 
       INNER JOIN anothertable 
               ON item_id = mainid; 
于 2012-06-22T14:33:41.330 に答える
1

次のようなものを試してください。

SELECT
    item_id AS mainID,
    anotherField
FROM theMainTable
INNER JOIN anotherTABLE ON item_id=mainID;
于 2012-06-22T14:33:45.617 に答える
1

ネストされたクエリが本当に必要な場合は、次のようにします。

SELECT item_id AS mainID, 
   (SELECT anotherField 
    FROM anotherTABLE 
    WHERE anotherTABLE.item_id=theMainTable.item_id) AS anotherField
FROM theMainTable;

ネストされたクエリが機能しなかった理由は、フィールドの取得元のテーブルを定義しておらず、列名があいまいであったことが原因である可能性があります。

上で述べたように、これは実際には代わりに結合を使用する場合です。

SELECT theMainTable.mainID, 
       anotherTABLE.anotherField
FROM theMainTable INNER JOIN anotherTABLE
ON theMainTable.item_id = anotherTABLE.mainID
于 2012-06-22T14:43:47.977 に答える