- 締切済み
すみませんが教えてください。JAVA
県テーブル 県ID,県名 001,北海道 002,青森 003,秋田 004,岩手 方角テーブル 方角ID,方角名 001,東 002,南 003,西 004,北 県位置テーブル 県,県,方角 001,002,002 003,004,001 このようなテーブルがあった時に、「北海道」と検索して「北海道の南に青森がある」のように表示させるプログラムをjavaで作成しているのですが、 select 県名,方角名 from 県,方角 where 県ID or 方角ID in (select * from 県位置 where 県ID like '%" + 001 + "%' ) のようなSELECT文を書くと ERROR 1241 (21000): Operand should contain 1 column(s) と表示されてしまいます。 どのようにすればうまくいくのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- jjon-com
- ベストアンサー率61% (1599/2592)
select SRC.県名 || 'の' || 方角.方角名 || 'に' || DST.県名 || 'がある' from 県位置 inner join 県 as SRC on 県位置.県1 = SRC.県ID inner join 県 as DST on 県位置.県2 = DST.県ID inner join 方角 on 県位置.方角 = 方角.方角ID where SRC.県ID = 001; http://www.sql-reference.com/string/concatenate.html
- kana_keiko
- ベストアンサー率40% (113/282)
データベースの種類を書いていないので何ともいえませんが、一般的にはWhere文の左辺にorは使えません。 従って、Where以下を (県ID in (select * from 県位置 where 県ID like '%" + 001 + "%' )) or (方角ID in (select * from 県位置 where 県ID like '%" + 001 + "%' )) とすればとりあえずいいかと思います。 ただ、もう少し効率がいいSQLがあると思うんですけどね。
お礼
早々の回答ありがとうございました。
お礼
ありがとうございました。