私は2つのテーブルを持っています。MySQLでサブクエリを使用する方法
表ユーザー:
CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(20) NOT NULL AUTO_INCREMENT,
`ud_id` varchar(50) NOT NULL,
`name` text NOT NULL,
`password` text NOT NULL,
`email` varchar(200) NOT NULL,
`image` varchar(150) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB
とmycatch:
CREATE TABLE IF NOT EXISTS `mycatch` (
`catch_id` int(11) NOT NULL AUTO_INCREMENT,
`catch_name` text NOT NULL,
`catch_details` text NOT NULL,
`longitude` float(10,6) NOT NULL,
`latitude` float(10,6) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`image` varchar(150) NOT NULL,
`user_id` int(20) NOT NULL,
PRIMARY KEY (`catch_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB;
ALTER TABLE `mycatch`
ADD CONSTRAINT `mycatch_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
私の目標は次のとおりです。私はud_id(から与えに対してmycatchから緯度と経度を取得したいですユーザ)およびcatch_idががcatch_id所与>とcatch_idをud_id所与=をud_id(mycatchから)。
私は、クエリを使用しますが
SELECT ud_id=$ud_id FROM user
WHERE user_id =
(
SELECT user_id,longitude,latitude from mycatch
WHERE catch_id>'$catch_id'
)
エラーを取得するために失敗は次のとおりです。
#1241 - オペランドは、まず1列(複数可)
SQLは意味がありません。サブクエリから 'user_id'を必要とするだけなら、なぜ' longitude'と 'latitude'を選択するのですか?なぜ外側の' SELECT'が値を設定するのですか? – BoltClock