前提・実現したいこと
smartyとoracleを用いてのSQL文の書き方について困っています。
userテーブル
id | name |
---|---|
1 | AAA |
2 | BBB |
3 | CCC |
商品テーブル
key | shohin_id | shohin_name |
---|---|---|
1 | 1 | ああ |
2 | 1 | いい |
3 | 2 | うう |
4 | 3 | ええ |
5 | 4 | おお |
これをwhere userテーブル.ID = 商品テーブル.shohin_id
とするとGetAllで
0=>{ name => AAA shohin_id => 1 shohin_name => ああ } 1=>{ name => AAA shohin_id => 1 shohin_name => いい }
こんな風にデータをとれますが、その後foreachで回したり、2つ3つsqlを発行するのも嫌なので、
ID | name | shohin_id | shohin_name |
---|---|---|---|
1 | AAA | 1 | ああ,いい |
2 | BBB | 2 | いい |
3 | CCC | 3 | ええ |
配列だと
{ name => AAA shohin_id => 1 shohin_name => {0=>ああ,1=>いい} }
こんな感じにしたいです。
発生している問題・エラーメッセージ
ORA-00907 エラーなどのエラーが出て先に進めません。
該当のソースコード
$sql =" SELECT u.user_id, u.user_name, s.shohin_id, s.shohin_name, LISTAGG(s.shohin_id, ',') WITHIN GROUP (ORDER by null) nm FROM USER u SHOUHIN s WHERE u.ID = s.shohin_id group by s.shohin_name "; $db->GetAll($sql);
LISTAGGというのをネットで見つけたはいいものの、上手くいかず・・・
もちろん、「実現不可能だ」や「もっといい方法がある」などでもいいので
どなたかご教授いただけませんでしょうか。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー