Помощь с выборкой из БД

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.527
Реакции
121
Подскажите, пожалуйста, как сделать выборку... MySQL
В разделе выводится список пользователей (одна таблица - user).
Есть 2-я таблица (auto), в которой столбик с id_uaser. В этой таблице все авто пользователя.
Нужно вывести список пользователей, а у каждого пользователя список его авто.
Все что приходит на ум:
1. при формировании вывода (на php) делать еще один запрос на выборку авто по id пользователя, который выводится (формируется на вывод). Но тогда будет сразу на 20-30 запросов больше :)
2. сделать подзапрос в запросе выборки всех пользователей. Только не знаю как это и можно ли...
 
2. сделать подзапрос в запросе выборки всех пользователей. Только не знаю как это и можно ли...
Именно так и надо. Можно так:
Код:
select a.*, u.id from auto as a
join user as u ON u.id = a.id_uaser
order by u.id
Выведет все авто, у которых есть юзеры. Если id_uaser не прописан или такого id_uaser нет в таблице user, то запись не будет включена в выборку. Информация по юзеру будет дублироваться для каждой машины. Дальше в php формируй необходимый тебе массив.
 
Именно так и надо. Можно так:
Код:
select a.*, u.id from auto as a
join user as u ON u.id = a.id_uaser
order by u.id
Выведет все авто, у которых есть юзеры. Если id_uaser не прописан или такого id_uaser нет в таблице user, то запись не будет включена в выборку. Информация по юзеру будет дублироваться для каждой машины. Дальше в php формируй необходимый тебе массив.
не то... это объединение таблиц... Если так делать, то получается много одинаковых пользователей.
Да и мне нужно вывести наоборот - список пользователей. У каждого пользователя блок с его авто. Если так просто делать, получается много одинаковых пользователей.
Хотя...
я решил так: сформировал массив, а все авто запихнул в виде массива в параметр пользователя.
Не знаю, это ты имел в виду или нет... но мысля появилась после твоей помощи :)
 
Последнее редактирование:
Ежели жаль дублировать делай 2 простыми запросами:
1й) получение авто. В массив собираешь user_id.
2й) получение пользователей с условием типа такого:
PHP:
$sWhere = " id IN ('" . implode("', '", $user_id) . "') "; //помечаем выбранные

Не факт, что такой вариант будет быстрее, чем с дублями - надо тестировать в каждом конкретном случае :)
 
Назад
Сверху