2 つのテーブルがあります。1 つは購入できるアイテムを説明するテーブルで、もう 1 つは他のアイテムを購入するための「必要なアイテム」を格納するテーブルです。最初の表には、取引の形態として他のアイテムを必要とするアイテムがいくつかあります。また、必要なアイテムが一定量必要になる場合もあります。2 つのテーブルのスキーマは次のとおりです。
+---------------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-----------------+------+-----+---------+----------------+
| storeID | int(5) unsigned | NO | PRI | NULL | auto_increment |
| itemID | int(10) | NO | | NULL | |
| quantity | int(10) | NO | | NULL | |
| cost | int(10) | NO | | NULL | |
+---------------+-----------------+------+-----+---------+----------------+
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| parentID | int(10) | NO | | NULL | |
| itemID | int(10) | NO | | NULL | |
| quantity | int(10) | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
2 番目のテーブルは最初のテーブルとリンクしていますstoreID <-> parentID
。ストア内のアイテムには、多くの必要なアイテムが含まれている場合があります。
問題: ストア内のすべてのアイテムを返すクエリを実行する必要がありますが、必要なすべてのアイテムとその数量も表示されます。次のようになります。
4 x Item1,5 x Item2
私はこの現在のクエリを持っています:
SELECT a.*, b.typeName, GROUP_CONCAT(CONCAT(c.quantity, " x ", d.typeName)) as `reqItems`
FROM lpStore a
INNER JOIN typeNames b ON (a.typeID = b.typeID)
INNER JOIN lpRequiredItems c ON (a.storeID = c.parentID)
INNER JOIN typeNames ON (d.typeID = c.typeID)
GROUP BY c.parentID
ORDER BY a.cost ASC
typeNames
itemID と実際の名前をリンクする単純なテーブルです。
現在、このクエリはうまく機能していますが、HAVE NO REQUIRED ITEMSの項目が含まれていないようです。GROUP BY とともに JOINS の 1 つであると思われます (そのテーブルに存在しないすべての NULL 値をグループ化する可能性がありますか?) が、まだ把握できていません。何も必要ない場合は、その列に空白または NULL を返す必要があります。
編集:サンプルデータ
簡単にするために、アイテム名テーブルとのテーブルの結合を削除しました
ここで入手できるサンプル データ: http://www.sqlfiddle.com/#!2/d8dca/1
実績:
+---------+--------+------+----------+-----------------------------+
| storeID | typeID | cost | quantity | reqItems |
+---------+--------+------+----------+-----------------------------+
| 1 | 2514 | 2000 | 3 | 5 x 3668,10 x 4825 |
| 3 | 8785 | 5000 | 2 | 1 x 4875,15 x 1102,5 x 9813 |
| 4 | 579 | 1500 | 5 | NULL |
+---------+--------+------+----------+-----------------------------+
予想された結果:
+---------+--------+------+----------+-----------------------------+
| storeID | typeID | cost | quantity | reqItems |
+---------+--------+------+----------+-----------------------------+
| 1 | 2514 | 2000 | 3 | 5 x 3668,10 x 4825 |
| 2 | 3199 | 1000 | 1 | NULL |
| 3 | 8785 | 5000 | 2 | 1 x 4875,15 x 1102,5 x 9813 |
| 4 | 579 | 1500 | 5 | NULL |
+---------+--------+------+----------+-----------------------------+