1°C
завтра: 7°C
Погода в Перми
1°C
днем5°C
вечером7°C
завтра7°C
Подробно
 63,96
−0.1086
Курс USD ЦБ РФна 20 апреля
63,9602
−0.1086
 71,92
−0.3208
Курс EUR ЦБ РФна 20 апреля
71,9232
−0.3208
  • sommerfield

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

    Проблема с написанием SQL-запроса.
    Ситуация следующая. Есть две таблицы, в одной фамилии людей и коды отделов, где они работают,
    а в другой коды этих самых отделов (назначается счетчиком) и названия отделов.
    Нужен запрос на выборку информации обо ВСЕХ сотрудниках, то есть требуется наличие в результате выборки данных даже о тех людях, у кого номер отдела не задан (равен нулю по умолчанию).

    Делаю так:

    SELECT staff.name, department.name
    FROM staff, department
    WHERE staff.department_code = department.id

    Однако, в результат выборки такого запроса не входит информация людей, у которых не указан номер отдела. Можно, конечно, во второй таблице на определенный id повесить значение department.name как "не указан", но это как-то уж совсем тупо.

  • Максимыч

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

    > во второй таблице на определенный id повесить значение department.name как "не указан", но это как-то уж совсем тупо.
    Это как раз было бы правильнее всего.
    Но уж если очень не хочется, то
    create table TAB1
    (id_dep integer, stname char(N1), depname char(N2))

    здесь N1- размер staff.name, N2-sizeof dep.name

    insert into TAB1
    select department_code, name from staff

    update TAB1 a
    set depname=(select name from department where id=a.department_code)

  • Анонимный пользователь
    не понял проблемы:

    SELECT staff.name, department.name
    FROM staff LEFT JOIN department on (staff.department_code = department.id)
    // если отдела нет, то department.name будет равен NULL

    или я чего то не понял в вопросе?

Записей на странице:

Перейти в форум

Модератор: