Loading...

ホームページ制作は相模原市にあるオフィス木蓮

  • 042-812-7728
  • 営業時間 9:00~18:00
  • 日曜・祝日はお休み

スタッフブログ

MySQLの列を
行にして
結合をPHPで

MySQL(に限りませんが)で2つのテーブルにて、1つのテーブルに複数の行にわたり保存されており、それを一方のテーブルの行に結合させようとしたい場合の方法。文章で書くと自分でもわかり難いので、表をまじえて説明。

TableA
number_A text_A
1 いぬ
1 ねこ
2 ねこ
3 いぬ
3 さる
TableB
number name
1 あつこ
2 ゆうこ
3 まりこ

上の2つのテーブルから、下のテーブルとして出力させたい!
TableAのnumber_AとTableBのnumberが紐付け。

TableOutput
number name animal_01 animal_02 animal_03
1 あつこ いぬ ねこ NULL
2 ゆうこ ねこ NULL NULL
3 まりこ いぬ さる NULL

PHPで上記の表を得たい場合は、以下のように実施する。

// 動物名は3つまで表示
for( $i = 0; $i < 3; $i++ ){
	$sqlAnimal = 'SELECT `number_A`, `text_A` AS `animal_0'.$i.'` FROM `TableA` WHERE `number_A` = '.$i.';';
	$joinSql .= 'LEFT JOIN ( '.$sqlAnimal.' ) AS `animalTable'.$i.'` ';
	$joinSql .= 'ON `TableB`.`number` = `animalTable'.$i.'`.`number_A`';
}
// 結合
$sql  = 'SELECT ';
$sql .= '`TableB`.*, ';
$sql .= '`animalTable0`.`animal_00`, ';
$sql .= '`animalTable1`.`animal_01`, ';
$sql .= '`animalTable2`.`animal_02` ';
$sql .= 'FROM `TableB` '.$joinSql.';';

あとはSQLを実行すればOK。
たまにわからなくなることがあるため、ここに備忘録として記録。

ホームページ制作を承ります

相模原市にある会社・店舗・事務所様からのご依頼大歓迎!

【士業】
弁護士(法律事務所),公認会計士,税理士,司法書士,行政書士,社会保険労務士など
【住まい】
不動産,工務店,建設・建築会社,設計事務所,リフォーム会社,建物管理会社,電気工事,水道工事など
【乗り物】
中古車ショップ,バイクショップ,自転車ショップ,自動車整備,運転代行など
【飲食業】
レストラン,カフェ,甘味処,洋菓子店,パン屋など
【医療・福祉】
病院,クリニック,歯科医,整体院,接骨院,介護センターなど
【美容・健康】
トレーニングジム,エステサロン,ネイルサロン,美容院,美容室など
【教育・育児】
専門学校,学習塾,幼稚園,保育園,認定保育園,カルチャースクール,パソコン教室など
【その他】
イベントサイト,産業廃棄事業,リサイクルショップ,雑貨店,ペットショップ,旅館,楽天市場店舗・Yahoo!ストア・MakeShopなど
【外注元】
デザイン事務所、広告代理店、ホームページ制作会社など

上記以外の業種でもホームページ制作・WEBシステム/アプリケーション開発につきましては、神奈川県相模原市中央区にあるオフィス木蓮までお気軽にご連絡・お問い合わせください。スマートフォン・タブレット対応、WordPress によるホームページ制作もお任せ下さい。他社が制作されたホームページでも対応します。また、ウェブアクセシビリティ(Webアクセシビリティ)対応のご相談も承ります。

相模原市にある会社・店舗・事務所のホームページ制作承ります