1

4 つの異なるクエリを実行してデータを結合する代わりに、SQL クエリをスタックできることを知りました。だから私はチュートリアルなどを読んでいますが、まだこの特定のものを理解することはできません.

SELECT ID,
       (SELECT firstname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS firstname,
       (SELECT lastname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS lastname,
       (SELECT org_fund_id
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS org_fund_ID,
       (SELECT ref_ID
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS ref_ID
FROM   fundraiser
WHERE  1
ORDER  BY org_fund_ID ASC

呼び出されるデータベース/テーブルの基本的なセットアップは次のとおりです。

基本的に、データベースから「資金調達者」からすべてのフィールドを取得したいのですが、対応する「user.firstname」と「user.lastname」を取得します。ここで、「fundraiser.user_ID」=「user.ID」です。

したがって、次のような行として出力されます: fundraiser.ID、fundraiser.user_ID、fundraiser.ref_ID、user.firstname、user.lastname

このクエリを作成する 30 の異なる方法を試しましたが、すべて失敗しました。私が得るエラーは「#1242 - サブクエリが複数の行を返します」です。

私が話していることを視覚化できるように、どのように詳細な情報を提供できるかわかりませんが、可能な限りのデータを提供します.

前もって感謝します。

4

1 に答える 1

2

すべての列を選択するには:

SELECT *
FROM   fundraiser f
       INNER JOIN user u
               ON u.ID = f.user_ID
ORDER  BY f.ord_fund_id ASC;

必要な列を選択するには:

SELECT 
    u.firstname,
    u.lastname,
    f.org_fund_id,
    f.ref_ID
FROM fundraiser f 
INNER JOIN user u ON u.ID = f.user_ID
ORDER BY f.ord_fund_id ASC;

これは、必要なものである必要があります。このウィキペディアのページを参照してください。

于 2012-08-30T10:34:41.053 に答える