2015-08-25 2 views
0

в основном для того, чтобы быстро обрабатывать вещи. Мне нужно иметь доступ к информации из двух таблиц, связанных промежуточным звеном, достигнутым от одного до многих, а затем от многих до многих отношений , В частности у меня есть следующие соответствующие таблицыSQL от одного до многих, от многих до многих, запрос Стройте

пользователей [ID, ...]

поездки [user_id, ...]

trip_type [идентификатор, trip_id, type_id]

типа [ id, ...]

ie Пользователи имеют много поездок, которые имеют много типов, которые сами имеют много поездок.

Моя цель - получить список всех идентификаторов каждого типа (с повторениями, которые должны произойти), связанных с конкретным пользователем, посредством каждой поездки, которую они совершили.

Я уверен, что это тривиально для SQL-запросов, но я не являюсь одним из этих людей, и поэтому я просто пишу глупость на этом этапе.

ответ

0
select users.id, trip_type.type_id, count(*) from users join trips on trips.user_id = users.id join trip_type on trips.id = trip_type.trip_id group by users.id, trip_type.type_id 

Это также даст вам количество попыток каждого типа, который пользователь взял. В этом запросе не будут перечислены пользователи, которые не совершили никаких поездок. Если вам нужны те пользователи, а также изменить слово «присоединиться» к «налево присоединиться к»

+0

Это определенно верно, нет trip.type_id? (myPHPadmin тоже не нравится) – Richard

+0

Нет, извините, пропустил таблицу, я отредактировал ответ, попробую и дайте мне знать. Он все еще может быть не 100%, так как у меня нет базы данных с этой структурой для тестирования. – dinomix

+0

Это большое спасибо. – Richard

0
SELECT tt.type_id, u.user_id, tr.id 
FROM trip_type tt 
INNER JOIN trips tr ON tr.id = tt.trip_id 
INNER JOIN types ty ON ty.id = tt.type_id 
INNER JOIN users u ON u.id = tr.user_id 
WHERE u.user_id = ? 

Это вернет type_ids, user_id и поездки идентификаторы для конкретного пользователя.

Смежные вопросы