SQL-запрос с использованием двух таблиц - PullRequest
1 голос
/ 03 сентября 2011

Таблица первая:

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

Я хочу получить всю информацию об отелях, которые есть у определенного пользователя, например, пользователь один, отели 4 и 5 ... любая помощь? Я пытался использовать объединение, но я полагаю, что я не правильно его использую ..?

Ответы [ 4 ]

3 голосов
/ 03 сентября 2011
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 голосов
/ 03 сентября 2011

t1 это псевдоним для table 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;
1 голос
/ 03 сентября 2011
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)
1 голос
/ 03 сентября 2011

Вы можете запросить все отели для пользователя с предложением exists:

select  *
from    hotels
where   exists
        (
        select  *
        from    users
        where   users.hotel_id = hotels.hotel_id
                and users.user_id = @YourUserId
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...