• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのSELECT文の書き方)

MySQLのSELECT文の書き方

このQ&Aのポイント
  • MySQLのSELECT文の書き方について説明します。テーブルを結合したり条件を指定したりしてデータを取得する方法を解説します。
  • MySQLのSELECT文は、テーブルを指定し、必要なカラムを指定してデータを取得します。さまざまな条件を指定することもできます。
  • PHPで配列に結果を格納する場合、SELECT文の結果を連想配列として取得し、必要なデータを配列に追加する方法があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>直接多次元配列で受け取ることは不可能でしょうか? ないとはいわないですが、効率を考えればexplodeに一票 ちなみにSQLの結果はこんなかんじ id  title  data  cats 1  あ  a  1,3,2 2  い  i  3,1 3  う  u  5,2 4  え  e  3,2 5  お  o  3,2,1 <?PHP $sql=<<<eof SELECT id,title,data,group_concat(cast(cat as char)) as cats FROM table_cat INNER JOIN table_title USING(id) INNER JOIN table_data USING(id) GROUP BY id eof; $res=mysql_query($sql) or die($sql.mysql_error()); while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $array=&$arrays[]; $array["id"]=$row["id"]; $array["title"]=$row["title"]; $array["data"]=$row["data"]; $array["cat"]=explode(",",$row["cats"]); } print_r($arrays); ?>

sr-ki
質問者

お礼

どうもありがとうございます! 御礼が遅くなり申し訳ありません。 ご回答を参考に、何とか希望の動作が実現できました。 おっしゃるようにexplodeでいくことにしました。 勉強になりました、ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

だいぶ変ですね・・ table_dataは使っていないですがよいですか? catの配列がもつ序数がおかしくないですか? とりあえずSQLはこんな感じで SELECT id,title,group_concat(cast(cat as char)) cats FROM table_cat INNER JOIN table_title USING(id) GROUP BY id うけたcatsを","でexplodeしてやればいいでしょう

sr-ki
質問者

補足

ご回答ありがとうございます。 申し訳ありません!ご指摘のようにだいぶ変でした。 正しくは以下のようにしたいです。 Array (  [0] => Array   (    [id] => 1    [title] => あ    [data] => a    [cat] => Array     (      [0] => 1      [1] => 2      [2] => 3     )    )  [1] => Array   (    [id] => 2    [title] => い    [data] => i    [cat] => Array     (      [0] => 1      [1] => 3     )   )  [2] => Array   (    [id] => 3    [title] => う    [data] => u    [cat] => Array     (      [0] => 2      [1] => 5     )   )  [3] => Array   (    [id] => 4    [title] => え    [data] => e    [cat] => Array     (      [0] => 2      [1] => 3     )   )  [4] => Array   (    [id] => 5    [title] => お    [data] => o    [cat] => Array     (      [0] => 1      [1] => 2      [2] => 3    )  ) ) なにぶんSQL初心者で、「group_concat」のところと「うけたcatsを","でexplode」というところが大事なのかな?という程度しか理解できませんでした。 「うけたcatsを","でexplode」というのは、PHPでexplodeということでしょうか? 直接多次元配列で受け取ることは不可能でしょうか?

関連するQ&A