1 (edited by Hram 2014-08-19 18:12:28)

Topic: [Решено] Сложный SQL-запрос. Union

Доброго времени суток.
DriveSoft, прошу помощи - 3 день голову ломаю...
Имеется две таблицы и 2 SQL-запроса.
Структура первой таблицы ZapicNaPriem

    id           INTEGER PRIMARY KEY ASC,
    Day          TEXT,
    Time         TEXT,
    id_Specializ INTEGER,
    First_Name   TEXT,
    Patronymic   TEXT,
    id_Doctors   INTEGER,
    id_Price     INTEGER,
    id_Cena      INTEGER,
    Address      TEXT,
    Phone        TEXT,
    Kvit         TEXT,
    Last_Name    TEXT,
    id_Referal   INTEGER,
    id_Reforg    INTEGER,
    id_RefSpec   INTEGER 

Структура 2 таблицы MKB10Client

    id              INTEGER PRIMARY KEY,
    id_mkb10        INTEGER,
    id_ZapicNaPriem INTEGER,
    Ishod           TEXT 

Связь между таблицами ZapicNaPriem.id = MKB10Client. id_ZapicNaPriem
2 отдельно работающих sql-запроса

SELECT
strftime('%d.%m.%Y', ZapicNaPriem.Day) AS Day
,Specializ.Spec
,Doctors.Fio
,Price.NameUsluga
,ZapicNaPriem.First_Name
,ZapicNaPriem.Last_Name
,ZapicNaPriem.Patronymic
FROM
ZapicNaPriem

LEFT OUTER JOIN Doctors ON Doctors.id=zapicnapriem.id_Doctors
LEFT OUTER JOIN Specializ ON Specializ.id=zapicnapriem.id_Specializ
LEFT OUTER JOIN Price ON Price.id=zapicnapriem.id_Price

WHERE
ZapicNaPriem.First_Name LIKE '{First_Name}' and
ZapicNaPriem.Last_Name LIKE '{Last_Name}' and
ZapicNaPriem.Patronymic LIKE '{Patronymic}'

2 запрос

SELECT
mkb10client.id
,mkb10.Code
,mkb10.Diagnoz
,Ishod
FROM
mkb10client
LEFT OUTER JOIN MKB10 ON MKB10.id=mkb10client.id_mkb10
where
id_ZapicNaPriem = {id}

Смысл - на одну запись в таблице ZapicNaPriem имеется несколько записей в таблице mkb10client. (аналогия Вашего примера тел. справочника)
Что хочу.
Долго думал как объяснить - проще скрином наверное ) Желтым выделены данные со 2 таблицы.
http://s016.radikal.ru/i336/1408/c8/df69001e5ef9.jpg
Т.е. хочу создать Report, в котором на одну строку с ZapicNaPriem добавить в столбик записи с mkb10client при условии ZapicNaPriem.id = MKB10Client. id_ZapicNaPriem. Пытаюсь через UNION, но не могу понять как во втором запросе правильно прописать условие поиска с другой таблицы

....
from
mkb10client
....
where
id_ZapicNaPriem = ZapicNaPriem.id 

.

Re: [Решено] Сложный SQL-запрос. Union

Приветствую,


Врядли вам нужен UNION, думаю нужно просто добавить эти таблицы в JOIN, при этом отчет нужно сделать с группировкой по полю ZapicNaPriem.id


SELECT
strftime('%d.%m.%Y', ZapicNaPriem.Day) AS Day
,Specializ.Spec
,Doctors.Fio
,Price.NameUsluga
,ZapicNaPriem.id
,ZapicNaPriem.First_Name
,ZapicNaPriem.Last_Name
,ZapicNaPriem.Patronymic

,mkb10client.id
,MKB10Client.Ishod
,mkb10.Code
,mkb10.Diagnoz

FROM ZapicNaPriem

LEFT OUTER JOIN Doctors ON Doctors.id=zapicnapriem.id_Doctors
LEFT OUTER JOIN Specializ ON Specializ.id=zapicnapriem.id_Specializ
LEFT OUTER JOIN Price ON Price.id=zapicnapriem.id_Price

LEFT OUTER JOIN mkb10client ON ZapicNaPriem.id=mkb10client.id_ZapicNaPriem
LEFT OUTER JOIN MKB10 ON MKB10.id=mkb10client.id_mkb10

WHERE
ZapicNaPriem.First_Name LIKE '{First_Name}' and
ZapicNaPriem.Last_Name LIKE '{Last_Name}' and
ZapicNaPriem.Patronymic LIKE '{Patronymic}'

SORT BY ZapicNaPriem.Last_Name;
Dmitry.