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

Тема в разделе "Базы данных", создана пользователем danneo, 20 апр 2014.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    Подскажите, пожалуйста, как сделать выборку... MySQL
    В разделе выводится список пользователей (одна таблица - user).
    Есть 2-я таблица (auto), в которой столбик с id_uaser. В этой таблице все авто пользователя.
    Нужно вывести список пользователей, а у каждого пользователя список его авто.
    Все что приходит на ум:
    1. при формировании вывода (на php) делать еще один запрос на выборку авто по id пользователя, который выводится (формируется на вывод). Но тогда будет сразу на 20-30 запросов больше :)
    2. сделать подзапрос в запросе выборки всех пользователей. Только не знаю как это и можно ли...
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.183
    Именно так и надо. Можно так:
    Код:
    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 формируй необходимый тебе массив.
     
    danneo нравится это.
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    не то... это объединение таблиц... Если так делать, то получается много одинаковых пользователей.
    Да и мне нужно вывести наоборот - список пользователей. У каждого пользователя блок с его авто. Если так просто делать, получается много одинаковых пользователей.
    Хотя...
    я решил так: сформировал массив, а все авто запихнул в виде массива в параметр пользователя.
    Не знаю, это ты имел в виду или нет... но мысля появилась после твоей помощи :)
     
    Последнее редактирование: 20 апр 2014
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.183
    Ежели жаль дублировать делай 2 простыми запросами:
    1й) получение авто. В массив собираешь user_id.
    2й) получение пользователей с условием типа такого:
    PHP:
    $sWhere " id IN ('" implode("', '"$user_id) . "') "//помечаем выбранные
    Не факт, что такой вариант будет быстрее, чем с дублями - надо тестировать в каждом конкретном случае :)