复杂的mysql声明

时间:2014-07-21 20:50:14

标签: php mysql sql select

我在这里遇到一些问题。 所以我有两个表,我需要以我认为复杂的方式获取数据。 以下是两个表的摘要

客户端

  1. 的client_id
  2. 名称
  3. 已预订 [默认为0]
  4. 住宿

    1. accommodation_id
    2. 的client_id
    3. 日期

      1. 我想要的是从 tbl中选择所有客户端ID 客户预订为1
      2. 然后使用 client_ids 选择住宿中的所有行 client_id 是第1步中返回的内容
      3. 我的想法对我来说非常困难

        $select_accomodation = "SELECT * FROM `accommodation` WHERE `booked` = 1";
        if($select_accomodation_run = @mysql_query($select_accomodation))
        {
            //awesome code that does no 2       
        }
        

        完成任务1和2的最佳方法是什么。希望在一个mysql语句中

3 个答案:

答案 0 :(得分:4)

如果您只想为预订的客户选择所有住宿,您可以

SELECT a.*
FROM accommodation a
INNER JOIN clients c ON a.client_id = c.client_ID
WHERE c.booked = 1

答案 1 :(得分:3)

试试这个:

 select t1.client_id, t2.accommodation_id, t2.client_id, t2.data, t2.price from clients t1 JOIN accommodation t2 on t1.client_id = t2.client_id WHERE t1.booked = 1 

答案 2 :(得分:1)

我的想法是,首先编写一个子查询来获取第1部分所需的ID,即:

SELECT client_id FROM clients WHERE booked = 1

然后,您可以使用IN子句

在住宿表的另一个查询中使用该子查询
SELECT a.* FROM accomodation a WHERE a.client_id IN (SELECT c.client_id FROM clients c WHERE c.booked = 1);