これは数時間見てきましたが、適切な解決策が見つかりません。私は架空のテーブルを使って私が期待していることを言って始めます。 SQLクエリを解析した後、私はこのような何かを返したい:独立したテーブルのクエリまたは複数の結合を分割します
[
{
"storeID": 1,
"storeName": "best store ever",
"products": [
{
"productID": 1,
"productName": "Name1",
"productPrice": 10.00
},
{
"productID": 2,
"productName": "Name2",
"productPrice": 10.00
},
{
"productID": 3,
"productName": "Name3",
"productPrice": 10.00
},
...
],
"employees": [
{
"employeeID": 1,
"employeeName": "Name1",
"employeeSalary": 40000.00
},
{
"employeeID": 2,
"employeeName": "Name1",
"employeeSalary": 45000.00
},
...
]
},
...
]
私の問題は、製品と従業員テーブルに格納テーブルの結合です。今、私はこれをやっている:
SELECT
s.storeID,
s.storeName,
p.productID,
p.productName,
p.productPrice,
e.employeeID,
e.employeeName,
e.employeeSalary,
FROM stores AS s
LEFT JOIN products AS p ON p.fk_store_id = s.storeID
LEFT JOIN employees AS e ON e.fk_store_id = s.storeID;
これで私はかなりのオーバーヘッドである各店舗の行x行の製品を得る。私は製品+従業員の行の数になることができる場合は、大丈夫です。しかし、それは2つの別々のクエリを実行するのと同じように思えます...製品に参加する店舗と従業員に加わる店舗の1つです。
これに対して、より適切な解決策は何でしょうか?
これは2つの別々のクエリでなければなりません。製品と従業員の数が異なる可能性があるため、1つのクエリでこれを完全に行う方法はありません。列が同じであるため、UNIONを実行できます。しかしそれは技術的にも2つの質問です。 UNIONでこれを行う方法の例を見る必要があるかどうかを教えてください。 – clinomaniac
私が与えた例では、列は同じであり、連合は機能しますが、実際の問題では列が同じではないということは真実です。したがって、UNIONは機能しません。そして、UNIONを行うときに2つのテーブルを区別することが不可能にならないのですか? – fcarle
データの種類を示す別の列を追加できます。列はstoreId、storeName、タイプ(従業員/製品)、ID、名前、価格/給与となります。 – clinomaniac