Помогите с sql запросом

Тема в разделе "Базы данных", создана пользователем rasandrey, 9 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Есть 5 таблиц:
    Код:
    table1,table2,table3,table4,table5
    table1 - Общая, которая имеет столбцы: id, id2, id3, id4, id5
    Здесь id2, id3, id4, id5 - это id полей из таблиц table2,table3,table4,table5

    table2,table3,table4,table5 - Таблицы включают столбцы id,name.

    Как правильнее всего сделать запрос к таблице 1, чтобы в итоге получить такой результат:

    id значение name таблицы2 значение name таблицы3 значение name таблицы4 значение name таблицы5

    Делаю так:
    Код:
    select id, (select name from table2 where id = id2), (select name from table3 where id = id3), (select name from table4 where id = id4), (select name from table5 where id = id5) from table1
     
  2. Funaki

    Funaki

    Регистр.:
    26 июн 2008
    Сообщения:
    151
    Симпатии:
    16
    так всё же правильно делаешь,
    ещё можно так
    Код:
    SELECT d1.id, d1.name1, d1.name2, d1.name3, d2.name as name4
    FROM (
    SELECT c1.id, c1.id5, c1.name1, c1.name2, c2.name as name3
    FROM (
    SELECT b1.id, b1.id4, b1.id5, b1.name1, b2.name as name2
    (
    SELECT a1.id, a1.id3, a1.id4, a1.id5, a2.name as name1
    FROM table1 a1, table2 a2
    WHERE a1.id2 = a2.id
    ) b1, table3 b2
    WHERE b1.id3 = b2.id ) c1, table4 c2
    WHERE c1.id4 = c2.id ) d1, table5 d2
    WHERE d1.id5 = d2.id 
    
    
    но так долго писать и +++дольше выполнение
     
  3. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Все правильно написали до меня, можно еще конечно JOIN'ами, но зачем. Но мой совет, когда дело доходит вот до такой котовасии - использовать foreign ключи. Есть много программ для визуального построения структур таблиц, простейшая, которую знают все - MS Access :) Тупо соединяя таблички стрелочками в итоге получишь SQL код, который позволит тебе избавится от твоей table1 и получить всякие няшки типа каскадного обновления.
     
  4. trn1

    trn1 Прохожие

    все верно в 1 и 2 постах

    а в чем суть вопроса?
     
Статус темы:
Закрыта.