Re[2]: Элементарная выборка
От: SBoyko  
Дата: 04.07.03 04:44
Оценка:
Здравствуйте, БуМарат, Вы писали:

БМ>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;

Спасибо огромное, это то, что надо !
Re[2]: Элементарная выборка
От: yogi Россия  
Дата: 04.07.03 08:00
Оценка:
Здравствуйте, Toughpheeckouse, Вы писали:

T>
T>SELECT t.ID, t.Name, e.RoomID, IFNULL(e.RoomID, -1) FROM 
T>Tools t LEFT OUTER JOIN Equipment e ON t.ID = e.ToolID
T>WHERE e.RoomID = 103
T>


Блин, чего то я вчера протупил Достаточно ведь поправить
WHERE e.RoomID IS NULL OR RoomID = 103

Ведь лефтджоин аксесс умеет делать?
Путь к сердцу женщины лежать не должен.
Re: Элементарная выборка
От: ААз  
Дата: 04.07.03 08:56
Оценка: 2 (1)
Здравствуйте, SBoyko, Вы писали:


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;


и по всем номерам и количество оборудования (вдруг в одном номере два телевизора
Re[2]: Элементарная выборка
От: БуМарат Россия  
Дата: 04.07.03 09:39
Оценка:
Здравствуйте, ААз, Вы писали:

ААз>Попробуй перекрестный запрос:


ААз>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,количество)
... << RSDN@Home 1.0 beta 6a >>
Цель жизни — стремление к цели
Re[3]: Элементарная выборка
От: ААз  
Дата: 04.07.03 10:57
Оценка:
Здравствуйте, БуМарат, Вы писали:

БМ>А не трудно ли будет потом работать в программе с наименованиями столбцов из записей таблицы? (Конечно, наверное, можно запрос модифицировать нужным образом)


нет не трудно. можно ограничить внутренний запрос Where RoomID=103 и получишь только для 103 номера. и работай только с полем "103"



БМ>IMHO нельзя так организовывать данные, чтобы количество телевизоров определять таким образом. Должно быть соответствующее поле : Equipment (ID,RoomID,ToolID,количество)



по сути таблица Equipment — опись оборудования с указанием места расположения и вида оборудования, таблица Tools- вид оборудования. Каждая запись таблицы Equipment может содержать данные присущие только этому объекту: дата ввода, откуда пришло, кто принял и пр. и потому их складывать нельзя.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.