, чтобы упростить мою задачу, скажем, у меня есть две таблицы: users
и cars
, которые имеют отношение многие ко многим (у одного пользователя может быть много машин, а у одного автомобиля может быть много пользователей):
tbl_users tbl_user_car tbl_cars
------------- ---------------------------- ------
id_usr | name id_usr_car | fk_usr | fk_car id_car | name
1 | usr1 1 | 1 | 1 1 | car1
2 | usr2 2 | 1 | 2 2 | car2
3 | usr3 3 | 2 | 1 3 | car3
У меня есть веб-CRUD, с помощью которого администратор может связывать автомобили с пользователями, поэтому я не знаю, сколько автомобилей имеет пользователь.Итак, я хочу сделать запрос, который показывает пользователя и все связанные с ним машины, но, как в сводной точке, что-то вроде этого:
SELECT * FROM pivot
------
name_usr | id_car | name_car | id_car2 | name_car2 | ... n number of cars
usr1 | 1 | car1 | 2 | car2 | ...
usr2 | 1 | car1 | | | ...
usr3 | | | | | ...
Я пытался использовать функцию crosstab()
, но мне нужно знать, сколько столбцовЯ хочу вернуться, и мне нужно сделать 5 внутренних соединений, чтобы увидеть больше данных.Любая помощь будет принята с благодарностью.