0

ホテルのテーブルがあります。また、ホテルの画像のテーブルもあります。特定のホテルの場合、ホテルの画像テーブルに複数の画像があります。

すべてのホテルの画像を 1 つだけ取得する必要があります。左結合を使用すると、特定のホテルのすべての画像を取得できます。すべてのホテルの画像が 1 つだけ必要です。

ホテルのテーブル

    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 ;
4

2 に答える 2

1

結合は両方のテーブルをバインドしますが、[GROUP BY] はレコード圧縮のように機能し、同じ値を持つレコードを取得します。この場合、tbl_hotel_imgage.int_hotel_id から 1 つのレコードのみを取得します。このステートメントの詳細については、こちらを参照しください .

    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;
于 2013-01-27T04:10:44.713 に答える
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
于 2013-01-27T04:45:54.427 に答える