• 締切済み

すみませんが教えてください。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) と表示されてしまいます。 どのようにすればうまくいくのでしょうか?

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

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

pipipoporako
質問者

お礼

ありがとうございました。

回答No.1

データベースの種類を書いていないので何ともいえませんが、一般的にはWhere文の左辺にorは使えません。 従って、Where以下を (県ID in (select * from 県位置 where 県ID like '%" + 001 + "%' )) or (方角ID in (select * from 県位置 where 県ID like '%" + 001 + "%' )) とすればとりあえずいいかと思います。 ただ、もう少し効率がいいSQLがあると思うんですけどね。

pipipoporako
質問者

お礼

早々の回答ありがとうございました。

関連するQ&A

専門家に質問してみよう