Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запросом из четырёх таблиц получить строку, отмеченную галочкой  [new]
ypmail
Member

Откуда:
Сообщений: 331
Есть 4 таблицы. Только в одной запись отмечена галочкой (см. прикреплённый пример).
Можно ли запросом проверить эти таблицы на наличие галочки и получить только эту отмеченную запись?
В данном случае должна получиться запись Топор 2

К сообщению приложен файл. Размер - 42Kb
27 дек 17, 16:37    [21067413]     Ответить | Цитировать Сообщить модератору
 Re: Запросом из четырёх таблиц получить строку, отмеченную галочкой  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20515
UNION
27 дек 17, 16:44    [21067447]     Ответить | Цитировать Сообщить модератору
 Re: Запросом из четырёх таблиц получить строку, отмеченную галочкой  [new]
ypmail
Member

Откуда:
Сообщений: 331
С UNION записи просто добавляются без сортировки по ID, пустые значения, где не стоит V тоже добавляются.
6 янв 18, 11:08    [21084355]     Ответить | Цитировать Сообщить модератору
 Re: Запросом из четырёх таблиц получить строку, отмеченную галочкой  [new]
ypmail
Member

Откуда:
Сообщений: 331
SELECT *
FROM (SELECT m.ID, VMat AS V, NPart AS N, MDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT MatID, VMat, NPart, MDescription FROM tblMaterial) AS mat ON m.ID = mat.MatID
UNION ALL
SELECT m.ID, VLab AS V, NLabPos AS N, LDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT LabID, VLab, NLabPos, LDescription FROM tblLabour) AS lab ON m.ID = lab.LabID) t WHERE t.V = 1 GROUP BY t.ID, t.V, t.N, t.Description


Потом начинаю эту выборку джойнить с главной таблицей и записи из этой выборки не добавляются

SELECT m.ID, NClaim, LEFT(TypeClaim, 4) AS TypeClaim, DRepair, NZN, VIN, Customer, PrObr, KI, DamageType
 FROM tblMain AS m LEFT JOIN tblDamage AS d ON m.ID = d.DamID
LEFT JOIN (SELECT *
FROM (SELECT m.ID, VMat AS V, NPart AS N, MDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT MatID, VMat, NPart, MDescription FROM tblMaterial) AS mat ON m.ID = mat.MatID
UNION ALL
SELECT m.ID, VLab AS V, NLabPos AS N, LDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT LabID, VLab, NLabPos, LDescription FROM tblLabour) AS lab ON m.ID = lab.LabID) t WHERE t.V = 1 GROUP BY t.ID, t.V, t.N, t.Description) AS temp ON m.ID = temp.ID
6 янв 18, 11:11    [21084359]     Ответить | Цитировать Сообщить модератору
 Re: Запросом из четырёх таблиц получить строку, отмеченную галочкой  [new]
ypmail
Member

Откуда:
Сообщений: 331
Нашел ошибку: забыл перечислить колонки временной таблицы в select
SELECT m.ID, NClaim, LEFT(TypeClaim, 4) AS TypeClaim, DRepair, NZN, VIN, Customer, PrObr, KI, DamageType, temp.V, temp.N, temp.Description
FROM tblMain AS m LEFT JOIN tblDamage AS d ON m.ID = d.DamID
LEFT JOIN (SELECT *
FROM (SELECT m.ID, VMat AS V, NPart AS N, MDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT MatID, VMat, NPart, MDescription FROM tblMaterial) AS mat ON m.ID = mat.MatID
UNION ALL
SELECT m.ID, VLab AS V, NLabPos AS N, LDescription AS Description FROM tblMain AS m 
LEFT JOIN (SELECT LabID, VLab, NLabPos, LDescription FROM tblLabour) AS lab ON m.ID = lab.LabID) t WHERE t.V = 1 GROUP BY t.ID, t.V, t.N, t.Description) AS temp ON m.ID = temp.ID
6 янв 18, 11:30    [21084382]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить