私は2つのテーブルを持っています。Mysqlグループconcat選択された列テーブルのみ一致テーブルB
テーブルタイヤ
+------------------------------+----------------------------------------------------------------+--------+-------+------+
| sku | tyrename | width | ratio | size |
+------------------------------+----------------------------------------------------------------+--------+-------+------+
| 2454019RE003(98W) | 245/40 R19 98W BRIDGESTONE Potenza RE003 | 245.00 | 40.00 | 19 |
| 2753519RE003(100W)XL | 275/35 R19 100W BRIDGESTONE Potenza RE003 XL | 275.00 | 35.00 | 19 |
| 2454019CSC5P(98Y)XL(EU) | 245/40 R19 98Y CONTINENTAL ContiSportContact 5P XL (EU) | 245.00 | 40.00 | 19 |
| 2454518CSC3(96W)(EU) | 245/45 R18 96W CONTINENTAL ContiSportContact3 (EU) | 245.00 | 45.00 | 18 |
| 2454518CSC3(96Y)ESSR(EU) | 245/45 R18 96Y CONTINENTAL ContiSportContact3 E SSR (EU) | 245.00 | 45.00 | 18 |
+------------------------------+----------------------------------------------------------------+--------+-------+------+
とテーブル車両
+------+------+---------------+-------------------------------+---------+---------+---------+---------+---------+---------+
| make | year | modeltrim | options | tyre1_1 | tyre1_2 | tyre1_3 | tyre2_1 | tyre2_2 | tyre2_3 |
+------+------+---------------+-------------------------------+---------+---------+---------+---------+---------+---------+
| BMW | 2014 | 5 Series 535i | OE Fitment 01 (18") | 245.00 | 45.00 | 18.00 | 0.00 | 0.00 | 0.00 |
| BMW | 2014 | 5 Series 535i | OE Fitment 02 (18") | 245.00 | 50.00 | 18.00 | 0.00 | 0.00 | 0.00 |
| BMW | 2014 | 5 Series 535i | OE Fitment 03 (17") | 225.00 | 55.00 | 17.00 | 0.00 | 0.00 | 0.00 |
| BMW | 2014 | 5 Series 535i | OE Fitment 04 Staggered (19") | 245.00 | 40.00 | 19.00 | 275.00 | 35.00 | 19.00 |
| BMW | 2014 | 5 Series 535i | Option 01 Staggered (19") | 245.00 | 40.00 | 19.00 | 265.00 | 45.00 | 19.00 |
+------+------+---------------+-------------------------------+---------+---------+---------+---------+---------+---------+
Iは、タイヤ幅、比及びサイズを使用して2台の参加、次のようなテーブルを生成するように1列にグループSKUしたいです。
+------+------+---------------+-------------------------------+-----------------------------------------------------------------+
| make | year | modeltrim | options | sku |
+------+------+---------------+-------------------------------+-----------------------------------------------------------------+
| BMW | 2014 | 5 Series 535i | OE Fitment 01 (18") | 2454518CSC3(96W)(EU),2454518CSC3(96Y)ESSR(EU) |
| BMW | 2014 | 5 Series 535i | OE Fitment 04 Staggered (19") | 2454019RE003(98W),2454019CSC5P(98Y)XL(EU),2753519RE003(100W)XL |
+------+------+---------------+-------------------------------+-------------------------------------------------+---------------+
2つのタイヤサイズを持ち、両方のサイズがタイヤ幅、比率サイズと一致する場合は、 1つのサイズがタイヤテーブルと一致する場合は、行を表示しないでください。
現在私は以下のSQLクエリを使用していますが、2つのタイヤサイズを持つこれらのオプションに一致するのは1つのタイヤサイズでも行を示しています。上記の例の表では、以下のクエリにはタイヤサイズ265/45/19タイヤテーブルにありませんにもかかわらず、「オプション01千鳥(19" )」の行が表示されます。
SELECT unionTable.make, unionTable.year, unionTable.modeltrim, unionTable.options, group_concat(unionTable.sku order by unionTable.sku)
FROM
(SELECT
a.make, a.modeltrim, a.year, a.options, b.sku
FROM
vehicle a
JOIN
tyre b
WHERE
a.tyre1_1 = b.width AND a.tyre1_2 = b.ratio
AND a.tyre1_3 = b.size
UNION ALL
SELECT
a.make, a.modeltrim, a.year, a.options, b.sku
FROM
vehicle a
JOIN
tyre b
WHERE
a.tyre2_1 = b.width AND a.tyre2_2 = b.ratio
AND a.tyre2_3 = b.size) AS unionTable
group by unionTable.make, unionTable.modeltrim, unionTable.year, unionTable.options
order by unionTable.make, unionTable.modeltrim, unionTable.year, unionTable.options, unionTable.sku
ありがとうございます。
あなたダウン議決権を行使された場合、その理由。 – Jaydee
(上記、たとえば、「2」)、アラームの鐘が鳴って起動する必要がありますあなたが列を列挙している任意の時間というコメントを残してください。 – Strawberry