Здравствуйте, БуМарат, Вы писали:
БМ>SELECT Tools.ToolID, Tools.ToolName, Equipment.RoomID БМ>FROM Tools, Equipment БМ>WHERE Tools.ToolID = Equipment.ToolID БМ>AND Equipment.RoomID=103 БМ>UNION БМ>SELECT T1.ToolID, T1.ToolName,('сюда NULL или что угодно') AS RoomID БМ>FROM Tools AS T1 БМ>WHERE T1.ToolID NOT IN (SELECT T2.ToolID БМ> FROM Tools AS T2, Equipment БМ> WHERE T2.ToolID = Equipment.ToolID БМ> AND Equipment.RoomID=103 ) БМ>ORDER BY Tools.ToolID;
SB>Необходимо сформировать запрос с результатом вида (для номера 103)
SB>1 Кондиционер 103 SB>2 Компьютер SB>3 Телевизор SB>4 Магнитофон 103 SB>5 Вентилятор
SB>Вопросы: SB>1. можно ли сформировать такой запрос. SB>2. его примерный вид в SQL SB>3. Вообще делает ли кто нибудь так???? )))
Попробуй перекрестный запрос:
TRANSFORM Count(ID) AS C_ID
SELECT tools.ToolID, ToolName
FROM [SELECT Equipment.*, tools.*
FROM Equipment INNER JOIN tools ON Equipment.ToolID = tools.ToolID]. AS [temp]
GROUP BY tools.ToolID, ToolName
PIVOT RoomID;
и по всем номерам и количество оборудования (вдруг в одном номере два телевизора
Здравствуйте, ААз, Вы писали:
ААз>Попробуй перекрестный запрос:
ААз>TRANSFORM Count(ID) AS C_ID ААз>SELECT tools.ToolID, ToolName ААз>FROM [SELECT Equipment.*, tools.* ААз>FROM Equipment INNER JOIN tools ON Equipment.ToolID = tools.ToolID]. AS [temp] ААз>GROUP BY tools.ToolID, ToolName ААз>PIVOT RoomID;
А не трудно ли будет потом работать в программе с наименованиями столбцов из записей таблицы? (Конечно, наверное, можно запрос модифицировать нужным образом)
ААз> ААз>и по всем номерам и количество оборудования (вдруг в одном номере два телевизора
IMHO нельзя так организовывать данные, чтобы количество телевизоров определять таким образом. Должно быть соответствующее поле : Equipment (ID,RoomID,ToolID,количество)
Здравствуйте, БуМарат, Вы писали:
БМ>А не трудно ли будет потом работать в программе с наименованиями столбцов из записей таблицы? (Конечно, наверное, можно запрос модифицировать нужным образом)
нет не трудно. можно ограничить внутренний запрос Where RoomID=103 и получишь только для 103 номера. и работай только с полем "103"
БМ>IMHO нельзя так организовывать данные, чтобы количество телевизоров определять таким образом. Должно быть соответствующее поле : Equipment (ID,RoomID,ToolID,количество)
по сути таблица Equipment — опись оборудования с указанием места расположения и вида оборудования, таблица Tools- вид оборудования. Каждая запись таблицы Equipment может содержать данные присущие только этому объекту: дата ввода, откуда пришло, кто принял и пр. и потому их складывать нельзя.