これはおそらくmysqlとの別の単純な左右の結合を持っています...しかしこれは少し複雑で、これまで私が見たすべての例は見えません私が持っているものと仕事をする。私はこれがちょっと混乱している場合はお詫び申し上げます...私は本当にそれを綴ってみるつもりです。基本的に、SAMEテーブルからデータを選択する3つのSELECTクエリがあります。それは私が取得する必要があるときは、しかし、これは空白にすることができ、アイテム名 -MySQLサブクエリはGroup By節を使って同じテーブルに...
- 「項目」:私は、テーブルにとの対話てるだけ4つのフィールドがある「ORDER_ITEMSを」と呼ばれるがあります:
- 「Essential_Type」 - 代替アイテム名
- 「QTY」 - 特定の順序で並べられたその項目の発注されているどのように多くのです。これらの行のためのQTYがNullであるが、その行が '1
- としてカウントする必要があるため、今、項目が空白の場合、私はCOUNT(Essential_Type)代わりにSUM(QTY)に必要「作成 - オーダー作成の日時
クエリ#1:これは私の項目の名前を取得し、どのように多くは販売された
のSELECT
IF(Item='', Essential_Type, Item) AS Name,
IF(Item='', COUNT(Essential_Type), SUM(QTY)) AS Qty
FROM Order_Items
GROUP BY Item, Essential_Type
ORDER BY Qty
戻り値:
NAME QTY
---------------------
8x10 2345
16x20 340
クエリ#2:これは私に販売された各項目の数を取得し、今年
SELECT
IF(Item='', Essential_Type, Item) AS Name,
IF(Item='', COUNT(Essential_Type), SUM(QTY)) AS ThisYear
FROM Order_Items
WHERE year(Created)=2016
GROUP BY Item, Essential_Type
戻り値:
Name ThisYear
-----------------------------
8x10 120
16x20 25
クエリ#3:ORDER_ITEMSは、例えば次のようになりますのであれば
Name LastYear
-----------------------------
8x10 500
16x20 30
:これは私の昨年
SELECT
IF(Item='', Essential_Type, Item) AS Name,
IF(Item='', COUNT(Essential_Type), SUM(QTY)) AS LastYear
FROM Order_Items
WHERE year(Created)=2015
GROUP BY Item, Essential_Type
戻り値を売却し、各項目の数を取得します。
Item Essential_Type QTY Created
---------------------------------------------------------------------
8x10 3 2016-09-01
8x10 1 2015-07-21
16x20 NULL 2015-08-12
16x20 NULL 2016-05-21
JOINを使用して、これらの3つの複雑なSELECTを1つのSELECTステートメントに結合するにはどうすればよいですか?基本的にはその最終的な結果は、(上記のサンプルテーブルに基づいて)次のようになります。読書や任意の潜在的な助けのため
Name QTY ThisYear LastYear
-----------------------------------------------------------
8x10 4 3 1
16x20 2 1 1
ありがとう!
これは完全に機能します。はい、この特定のテーブルのデータは実際には効率が悪いので混乱しますが、データを並べ替えることなくそのまま使用しなければなりません。答えをありがとう、それはかなり助けます。 –