MSQL Server 2000 и обработка нескольких таблиц
ASP и MSQL Server 2000
Пытаюсь сделать SELECT сразу по двум таблицам с разными названиями,
но совершенно с одинаковыми наименованиями полей. Значения ID в таблицах всегда разные.
set RS=Conn.execute("SELECT ID, S1,S2 From Tab1, Tab2 " &_
"WHERE ( " &_
"(S1 = 'U') ")
Выдается сообщение
Ambiguous column name 'ID'.
Мне надо сделать выборку из обеих таблиц тех строчек, у которых значения поля S1=U.
Подскажите, пожалуйста.
Таблица 1
TabName=Tab1
ID | S1 | S2
------------------------------------
211 | M | 32
214 |U | 62
215 | M | 91
216 | U | 84
217 | M | 78
218 | U | 36
Таблица 2
TabName=Tab2
ID | S1 | S2
--------------------------------------------------
220 | M | 52
221 | M | 51
222 | U | 54
223 | U | 55
224 | M | 56
225 | U | 59
ID | S1 | S2
------------------------------------
214 |U | 62
216 | U | 84
218 | U | 36
222 | U | 54
223 | U | 55
225 | U | 59
В этом случае нужно использовать UNION:
SELECT id, s1, s2 FROM Tab1 WHERE s1 = 'U'
UNION
SELECT id, s1, s2 FROM Tab2 WHERE s1 = 'U'
SELECT tab1.id, tab1.s1, tab1.s2, tab2.id, tab2.s1, tab2.s2 FROM tab1, tab2
Результат будт иметь вид:
tab1.id|tab1.s1|tab1.s2|tab2.id|tab2.s1|tab2.s2
Чтобы не париться и не писать каждый раз имена таблиц, можно использовать псевдоним:
SELECT a.id, a.s1, a.s2, b.id, b.s1, b.s2 FROM tab1 a, tab2 b
Erast, cпасибо за помощь. Сработало.
Прошу пардон за настойчивость, однако далее мне надо, применяя UNION, одновременно отсортировывать результат по общему ID (по его возрастанию/убыванию значения), т.е. фактически это - сортировка по ID результирующей выборки (см ниже таблицу). ID у таблиц никогда не совпадают, поэтому и значения общего ID тоже разные. Попытки применить "ORDER by ID DESC (или ASC)" или ORDER by (tab1.ID)AND(tab2.ID) DESC, или ORDER by (tab1 AND tab2).ID DESC и т.д. выдает ошибку типа: Error near ORDER. Возможно я напутал, что-то с синтаксисом. Есть ли выход из ситуации?
Спасибо заранее,
Удачи.
<<
Erast wrote:
В этом случае нужно использовать UNION:
SELECT id, s1, s2 FROM Tab1 WHERE s1 = 'U'
UNION
SELECT id, s1, s2 FROM Tab2 WHERE s1 = 'U'
>>
<<
Erast wrote:
насколько я понял, ты хочешь получить нечто вроде
ID | S1 | S2
------------------------------------
214 |U | 62
216 | U | 84
218 | U | 36
222 | U | 54
223 | U | 55
225 | U | 59
>>
Необходима сортировка этих данных.