我有一张酒店的桌子。我也有一张酒店用餐桌。对于一个特定的酒店,酒店图像表中会有多张图片。
我只需要获得所有酒店的单一图像。而使用左连接我会得到特定酒店的所有图像。我只需要一张酒店的图像。
酒店餐桌
CREATE TABLE IF NOT EXISTS `tbl_hotel` (
`int_hotel_id` int(11) NOT NULL auto_increment,
`str_country_id` varchar(5) NOT NULL,
`str_hotel_name` varchar(20) default NULL,
`int_property_type_id` int(11) default NULL,
`int_hotel_theme_id` int(11) default NULL,
`str_hotel_facility` varchar(50) default NULL,
`str_star_category` varchar(10) default NULL,
`str_web_url` varchar(30) default NULL,
`str_hotel_mail_id` varchar(25) default NULL,
`txt_hotel_description` text,
`str_hotel_city_name` varchar(50) default NULL,
`str_hotel_address` text NOT NULL,
`str_hotel_address2` text NOT NULL,
`int_hotel_zip_code` varchar(20) default NULL,
`str_hotel_phone` varchar(20) default NULL,
`str_hotel_fax_no` varchar(20) default NULL,
`bit_allow_booking` tinyint(4) default NULL,
`bit_active` tinyint(4) NOT NULL default '0',
`str_account_type` varchar(200) NOT NULL,
PRIMARY KEY (`int_hotel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=95 ;
酒店形象
CREATE TABLE IF NOT EXISTS `tbl_hotel_image` (
`int_image_id` int(11) NOT NULL auto_increment,
`str_image_name` varchar(50) default NULL,
`txt_image_description` text,
`int_hotel_id` int(11) default NULL,
`bit_main_image` tinyint(4) default NULL,
`bit_active` tinyint(4) default NULL,
PRIMARY KEY (`int_image_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=119 ;
答案 0 :(得分:1)
连接绑定两个表,但[GROUP BY]的作用类似于记录压缩,获取具有相同值的记录,在这种情况下,它只从 tbl_hotel_imgage.int_hotel_id {获取一条记录{3}}和here您可以找到有关此声明的更多信息。
Select * from
tbl_hotel inner join tbl_hotel_image on
tbl_hotel_image.int_hotel_id=tbl_hotel.int_hotel_id
Group by
tbl_hotel_image.int_hotel_id;
答案 1 :(得分:0)
select * from (
select * from tbl_hotel h
join (select
int_image_id,
str_image_name,
@curRank := @curRank + 1 AS rank
from tbl_hotel_image,(SELECT @curRank := 0) r
ORDER BY image_id) img
on h.int_hotel_id = img.int_hotel_id
) q
where rank = 1