I'vは、4つのテーブルがクエリに関与しました:MYSQL JOINを行を制限
はメインテーブルitems
は、項目のリストを保持しているアイテムのカテゴリINNER JOINを保持しているINNERは、ID item_categories
により、JOINアイテムサプライヤーを保持している suppliers
id
およびorders
次の構造体で注文を保持するテーブル id
。 。 。 items
=>順番にJSON項目の
例をitems配列を保持するJSON:
私は最後の4桁量私にすべてのアイテムのテーブルを取得したい
{
"10": {
"name": "item 1",
"step": "1",
"price": "140",
"amount": "4"
},
"24": {
"name": "item 2",
"step": "1",
"price": "6.2",
"amount": "1"
},
"35": {
"name": "item 3",
"step": "1",
"price": "2.9",
"amount": "3"
},
"37": {
"name": "item 4",
"step": "1",
"price": "3.9",
"amount": "2"
}}
メイクにこのクエリ疥癬:
SELECT
`items`.`id`,
`items`.`part_number`,
`item_categories`.`name` AS category,
`suppliers`.`name` AS supplier,
`items`.`supplier_id`,
`items`.`name`,
`items`.`inventory`,
`items`.`package_items`,
`items`.`order_step`,
`items`.`price`,
`items`.`discount`,
`items`.`scale`,
`items`.`by_scale`,
`items`.`has_tax`,
`items`.`category_id`,
`items`.`enable`,
Group_concat(Json_extract(`orders`.`items`, Concat('$."', `items`.`id`, '".amount')) ORDER BY
`orders`.`createdate` DESC) AS last_orders_amount
FROM `items`
INNER JOIN `suppliers`
ON `items`.`supplier_id` = `suppliers`.`id`
INNER JOIN `item_categories`
ON `items`.`category_id` = `item_categories`.`id`
LEFT JOIN `orders`
ON
Json_extract(`orders`.`items`, Concat('$."', `items`.`id`, '"')) IS
NOT NULL
WHERE 1
GROUP BY `items`.`id`
全てラストオーダーと私にすべてのアイテムを与える
私の最終的な質問は、私が左ジョイントで得た結果を制限することができる方法はありますか?
感謝:)
であなたもあなたの代わりに注文から選択された列について特定する必要があるかもしれない選択'*' – wahyzcrak
どうすれば 'items'.idをネストされたselectに得ることができますか? –