ФорумРазработкаБазы данных → sql запрос

sql запрос

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 25 ноября 2010 г. 20:14

    написал вот такой запрос
    
    SELECT  `area_name` ,  `street_name` ,  `house_name` ,  `price` ,  `user_login` ,  `user_skill` ,  `user_profile_phone` 
    FROM  `taxi_areas` 
    JOIN  `taxi_streets_areas` ON  `taxi_areas`.`area_id` =  `taxi_streets_areas`.`area_id` 
    JOIN  `taxi_streets` ON  `taxi_streets`.`street_id` =  `taxi_streets_areas`.`street_id` 
    JOIN  `taxi_orders` ON  `taxi_orders`.`street_id` =  `taxi_streets`.`street_id` 
    JOIN  `taxi_user` ON  `taxi_user`.`user_id` =  `taxi_orders`.`user_id` 
    WHERE  `taxi_areas`.`area_name` =  'Центральный'
    LIMIT 0 , 30
    


    как его оптимизировать и избежать того, чтобы запрос при некоторых условиях не вытягивал лишние данные, например, отобразит данные другого пользователя, если нет необходимого - вечная для меня проблема
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 25 ноября 2010 г. 21:53, спустя 1 час 39 минут 23 секунды

    select
     u.name u_name,
     s.name s_name,
     w.name w_name
    from users u  
      join street s
        on u.street_id = s.id  – отбираем юзера и улицу его проживания
        and u.id = :USER_ID
      left join users w  – LEFT даже, если жены нет, то даные по юзеру нам надо получить
        on u.partner = w.id  – если есть жена, то вытяем и её даные

    Если я правильно понял Ваш вопрос. Если не то, то говорите точнее, что у Вас не получается.
    Используйте псевдонимы.
    Используйте псеводнимы при указании полей.
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 25 ноября 2010 г. 22:00, спустя 6 минут 47 секунд


    select
     u.name u_name,
     s.name s_name,
     w.name w_name
    from users u  
      join street s
        on u.street_id = s.id  – отбираем юзера и улицу его проживания
        and u.id = :USER_ID
      left join users w  – LEFT даже, если жены нет, то даные по юзеру нам надо получить
        on u.partner = w.id  – если есть жена, то вытяем и её даные

    Если я правильно понял Ваш вопрос. Если не то, то говорите точнее, что у Вас не получается.
    Используйте псевдонимы.
    Используйте псеводнимы при указании полей.


    хех, на самом деле мы выводим заказы такси, в зависимости от района, в котором находится клиент

    выводим в виде
    [улица и дом] - [номер телефона] - [имя] - [рейтинг] - [предлагаемая цена]
    Спустя 61 сек.
    LEFT JOIN обычно никак не помогает
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 26 ноября 2010 г. 0:25, спустя 2 часа 24 минуты 59 секунд

    GROUP BY
    Спустя 32 сек.
    или distinct по нужному полю
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 26 ноября 2010 г. 14:08, спустя 13 часов 43 минуты 17 секунд

    soulgarden, провидец с меня хреновый.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!