Ещё вопрос по выборке SQL...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Ещё вопрос по выборке SQL...

Сообщение Rojohn » 26.12.2005 (Пн) 16:06

Ещё раз приветы!
Не могу понять как строить запрос. Есть две таблицы tbl1 и tbl2.
В tbl1 есть поля ID, Code1 и Code2. В tbl2 поля KeyInd, KeyTxt.
Надо вытащить ID, KeyTxt as Txt1 (KeyInd=Code1) и KeyTxt as Txt2 (KeyInd=Code2). Можно ли прописать разные условия к дубликату одного и того же поля? Подскажите решение, а то надо срочно, а прописывать как 2 отдельных запроса очень стрёмно и нерентабельно.

Спасибо за ответы!

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 26.12.2005 (Пн) 16:26

Если надо быстро, то в аксесе быстрый и понятный конструктор. :)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 26.12.2005 (Пн) 16:31

Знаю про конструктор и не первый раз им пользуюсь... Проблема именно в конкретном запросе, а именно как прописать два разных условия к одному полю и достать разные записи из tbl2, соответствующие кодам из tbl1.
Последний раз редактировалось Rojohn 26.12.2005 (Пн) 16:41, всего редактировалось 1 раз.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 26.12.2005 (Пн) 16:39

Что значит разных? And и Or к ним не применимы???
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Расшифровка

Сообщение Rojohn » 26.12.2005 (Пн) 17:20

Надо написать что-то типа:

Код: Выделить всё
Select tbl2.ID, tbl1.KeyTxt as txt1, tbl1.KeyTxt as txt2 where ((tbl2.Code1=tbl1.KeyInd) Or (tbl2.Code2=tbl1.KeyInd));


Только разве в этом случае будет понятно какое условие для txt1, а какое для txt2? Мне нужно, чтобы в DataGrid всё вышло как в таблице tbl2, только не кодами, а текстом.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 26.12.2005 (Пн) 18:17

Если Code1 и Code2 всегда содержат правильные данные, то использовать алиасы:

Код: Выделить всё
Select a.ID, b.KeyTxt As Txt1, c.KeyTxt As Txt2 From tbl1 a, tbl2 b, tbl2 c Where a.Code1 = b.KeyInd And a.Code2 = c.KeyInd


Если нет, то модифицировать этот запрос, введя дополнительные условия на проверку валидности данных.
То, что для одних константа, для других только переменная...

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 27.12.2005 (Вт) 13:41

Спасибо Odrick! Всё заработало! Если честно совсем забыл про эти алеасы:) Может ещё подскажешь, мне тут встретился текст запроса со словом Alias:
Код: Выделить всё
Select Count(*) From [Select... ]. AS [%$##@_Alias];


Что означает ". AS [%$##@_Alias]"? Подозреваю, что создаётся временная таблица, содержащая информацию из SELECT-а? Можно объяснить поподробнее?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 27.12.2005 (Вт) 14:03

Да, именно так. При такой конструкции: [Select... ]. AS [%$##@_Alias] создается виртуальная таблица с псевдонимом %$##@_Alias, содержащая результат запроса. Но в даном случае это как-то рогато ;)
Чем не устраивает просто:

Select Count(FIELD) From TABLE Where .... ?
То, что для одних константа, для других только переменная...

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 27.12.2005 (Вт) 14:08

А какие в этом псевдониме активные символы? Я пробовал менять на другой псевдоним - результат совсем другой.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 27.12.2005 (Вт) 14:13

В смысле? А! Какая БД? Не Access часом? ;) Во всех нормальных БД то что ты напишеш как псевдоним, то им и будет. В аццессе же, как и во всех разработках мелкомягких, международные стандарты вполне могут быть попраны :lol:
То, что для одних константа, для других только переменная...

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 27.12.2005 (Вт) 14:21

В Access-е писал вместо [%$##@_Alias] например [MyTbl] он выдавал другое... А щас проверил - всё нормально:) Глюк какой-то наверное.. Ладно, спасибо за ответы!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 133

    TopList