За последние 24 часа нас посетили 21599 программистов и 1029 роботов. Сейчас ищут 750 программистов ...

Sql запрос на выборку из трех таблиц

Тема в разделе "PHP для новичков", создана пользователем Viktoriya, 19 мар 2023.

  1. Viktoriya

    Viktoriya Новичок

    С нами с:
    19 мар 2023
    Сообщения:
    3
    Симпатии:
    0
    Подскажите пожалуйста, как сделать выборку из трех таблиц такого типа(это из двух таблиц):

    SELECT `o`.*, `u`.`name` FROM `orders` AS `o` LEFT JOIN `uslugi` AS `u`ON `o`.`id_uslugi` = `u`.`id`

    Это работает.
    А вот нужно из трех таблиц. Я сделала так:

    SELECT `o`.*, `u`.`name`, `s`.`fio` FROM `orders` AS `o` LEFT JOIN `uslugi` AS `u` LEFT JOIN `users` AS `s` ON `o`.`id_uslugi` = `u`.`id`, `o`.`id_user` = `s`.`id_user`

    Но не работает(
    Помогите пожалуйста)))
     
  2. Aleksandr.B

    Aleksandr.B Новичок

    С нами с:
    2 фев 2023
    Сообщения:
    152
    Симпатии:
    40
    Адрес:
    Барнаул
    Возможно вместо запятой нужно and
    ( `o`.`id_uslugi` = `u`.`id` and `o`.`id_user` = `s`.`id_user`), но не уверен.
     
  3. Viktoriya

    Viktoriya Новичок

    С нами с:
    19 мар 2023
    Сообщения:
    3
    Симпатии:
    0
    Нет, пробовала, не работает
     
  4. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Вместо ON надо использовать WHERE условие AND условие
    Пишите код в столбик. Лучше читается.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    А ещё принято читать и приводить сообщение об ошибке, чтоб понять в чем дело
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Код (Text):
    1. SELECT  `t3`.`item_id`, `t1`.*, `t2`.*
    2. FROM `t1`, `t2`, `t3`
    3. WHERE `t1`.`col_x` = `t2`.`col_y`
    4. AND `t3`.`col_z` = `t2`.`col_z`
    5. AND `t3`.`item_id` = 123456
     
    Viktoriya нравится это.
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    @Viktoriya сделай пожалуйста заготовку на db-fiddle.com, чтобы было понятно с какими структурами и данными работаешь и чтобы сразу можно было дать ответ на этих данных.

    пример такой "песочницы": https://www.db-fiddle.com/f/ju2hCYw4duWsP7WJT1EaN6/0
     
    miketomlin нравится это.
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Viktoriya, в случае применения ON, условия надо писать для каждого JOIN.
    То есть, join {услуги} u on u.id = o.id_uslugi join users s on s.id_user = o.id_user
     
    Viktoriya нравится это.
  9. Viktoriya

    Viktoriya Новичок

    С нами с:
    19 мар 2023
    Сообщения:
    3
    Симпатии:
    0
    Спасибо большое)
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Viktoriya, нужно описывать назначение необходимого запроса. А то исправите синтаксические ошибки, а запрос все равно будет работать через задницу ;)
     
    TeslaFeo нравится это.
  11. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    @Viktoriya еще мысль. Имена полей какие то бессмысленные. Они должны отражать то, что в них хранится. ИМХО