私はこのような2つのテーブルを持っています:
CREATE TABLE IF NOT EXISTS tb_item (
item_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
item_name VARCHAR(100) NULL ,
PRIMARY KEY (item_id)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS tb_item_img (
item_img_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
item_img_thumb ENUM('0','1') NULL DEFAULT '0' ,
item_img_image VARCHAR(100) NULL ,
item_id INT UNSIGNED NOT NULL ,
PRIMARY KEY (item_img_id) ,
INDEX fk_tb_item_img_tb_item1_idx (item_id ASC) ,
CONSTRAINT fk_tb_item_img_tb_item1
FOREIGN KEY (item_id )
REFERENCES tb_item (item_id )
ON DELETE RESTRICT
ON UPDATE RESTRICT)
ENGINE = InnoDB;
そして、すべてのアイテムを選択したいクエリが1つtb_item
あり、各アイテムに1つの画像だけを選択します。サブクエリを使用したくないので、次のようにJOINを使用しています:
SELECT `item_id`, `item_name`, `item_img_image`
FROM (`tb_item`)
INNER JOIN `tb_item_img` USING ( `item_id` )
LIMIT 8
ただし、アイテムに複数の画像がある場合、複数回返されます。アイテムに画像がない場合、選択されていません。
したがって、私の質問は次のとおりです。上記のようなクエリを使用して、すべてのアイテムと 1 つの画像または NULL を画像フィールドに選択することは可能ですか。しかし、それぞれ一度だけitem_id
ですか?