SQL メインテーブル - 詳細テーブルから選択 (フォーマットされたデータ)
P粉904191507
P粉904191507 2024-03-27 22:03:16
0
1
445

「Supplier」と「Contact」という名前の 2 つのテーブルがあります。

連絡先テーブルのデータは、サプライヤー テーブルのレコードに対応します。

サプライヤーデータ

###名前### 1 ###馬力### ファーウェイ連絡先データ
id
2

idサプライヤーID ###接続する### 1ジョンスミス ###ミーティング### ###芯### 次に、次の結果を返すクエリを作成したいと思います ###名前### ###接続する###
1
2 1
3 1
4 2 米国エネルギー省
5 2
id

1 ###馬力### ジョン、スミス、ウィル米国エネルギー省、ウェイクまたは、次の結果が返されるはずですid ###名前### ###接続する### ###接続する### ###接続する### ###馬力### ジョン
2 ファーウェイ
1
スミス

###ミーティング###

2 ###芯###
P粉904191507
P粉904191507

全員に返信(1)
P粉124890778

MySQL GROUP_CONCAT 集計関数を使用して、最初の出力テーブルを取得できます。独自の ORDER BY 句を使用すると、行の連結順序を確認できます。

リーリー

ウィンドウ関数 ROW_NUMBER を使用して、サプライヤーごとにパーティション化して Contact テーブルの各行にランキングを割り当てることができます。次に、IF ステートメントを使用して連絡先が 3 つの列に分割され、ランキングに使用できる 3 つの値がチェックされます。 MAX 集計関数を使用すると、NULL 値を削除できます。

リーリー

2 番目のクエリは、サプライヤーごとに顧客が 3 人を超える場合には機能しない可能性があります。この場合、可能な最大数のサプライヤーを含めるようにクエリを変更するか、準備されたステートメントを使用できます。本当にそのような解決策が必要な場合は、以下にコメントを残してください。

より深く理解するには、ここでこれらのソリューションを使用できます。最初のソリューションは任意の MySQL バージョンで動作し、2 番目のソリューションは MySQL 8 で動作します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
ファーウェイ 米国エネルギー省