Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запросом из четырёх таблиц получить строку, отмеченную галочкой / 5 сообщений из 5, страница 1 из 1
27.12.2017, 16:37
    #39576993
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросом из четырёх таблиц получить строку, отмеченную галочкой
Есть 4 таблицы. Только в одной запись отмечена галочкой (см. прикреплённый пример).
Можно ли запросом проверить эти таблицы на наличие галочки и получить только эту отмеченную запись?
В данном случае должна получиться запись Топор 2
...
Рейтинг: 0 / 0
27.12.2017, 16:44
    #39576999
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросом из четырёх таблиц получить строку, отмеченную галочкой
UNION
...
Рейтинг: 0 / 0
06.01.2018, 11:08
    #39580005
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросом из четырёх таблиц получить строку, отмеченную галочкой
С UNION записи просто добавляются без сортировки по ID, пустые значения, где не стоит V тоже добавляются.
...
Рейтинг: 0 / 0
06.01.2018, 11:11
    #39580008
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросом из четырёх таблиц получить строку, отмеченную галочкой
Код: sql
1.
2.
3.
4.
5.
6.
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



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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
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
...
Рейтинг: 0 / 0
06.01.2018, 11:30
    #39580009
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запросом из четырёх таблиц получить строку, отмеченную галочкой
Нашел ошибку: забыл перечислить колонки временной таблицы в select
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
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
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запросом из четырёх таблиц получить строку, отмеченную галочкой / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]