【问题标题】:sql query using two tables使用两个表的sql查询
【发布时间】:2011-09-03 17:55:34
【问题描述】:

表一:

|user_id|hotel_id|  
|  1    |  4     |
|  1    |  5     | 
|  2    |  6     |
|  4    |  7     |

表二:

|hotel_id|hotel_name|more_ifo| 
|    4   | bla      |bla     |
|    5   | bla      |bla     |
|    6   |more bla  |bla     |
|    7   | bla      |bla     |

我想获取某个用户拥有的酒店的所有信息,例如用户 1 的酒店 4 和 5 .. 有什么帮助吗?我尝试使用 join 但我想我没有正确使用它..?

【问题讨论】:

标签: sql join


【解决方案1】:
SELECT users.*, hotels.*
FROM users
INNER JOIN hotels
ON users.hotel_id = hotels.hotel_id

请注意,在SELECT 子句中使用* 被认为是不好的做法;我只是在这里作为使用连接示例的一部分。

如果您想搜索与特定用户关联的酒店,只需添加 WHERE 子句即可:

SELECT users.*, hotels.*
FROM users
INNER JOIN hotels
ON users.hotel_id = hotels.hotel_id
WHERE users.user_id = ?

【讨论】:

  • 它不会只给我所有的酒店吗?我正在寻找只有一个用户的酒店,不应该在某个地方有“哪里”吗?
  • 请刷新。在您发表评论之前,我更新了我的答案以包含这样的查询。
【解决方案2】:

t1table one 的别名,并且 t2 是别名table two

select t1.user_id,t2.hotel_id,t2.hotel_name,t2.more_info
from table_one t1 INNER JOIN table_two t2
ON t1.hotel_id=t2.hotel_id
where t1.user_id=1;

【讨论】:

    【解决方案3】:

    您可以使用exists 子句查询所有酒店的用户:

    select  *
    from    hotels
    where   exists
            (
            select  *
            from    users
            where   users.hotel_id = hotels.hotel_id
                    and users.user_id = @YourUserId
            )
    

    【讨论】:

      【解决方案4】:
      Select B.more_ifo
      From table_one A, table_two B
      Where A.hotel_id = B.hotel_id
      

      这不行吗?

      在那之后;

      Select B.more_ifo
      From table_one A, table_two B
      Where A.hotel_id = B.hotel_id
      AND A.hotel_id IN (4, 5)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-01
        • 2014-08-30
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-04
        • 2021-12-08
        相关资源
        最近更新 更多