Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Вниз

ПРИВЕТ ВСЕМ!!! Помоготе построить запрос: 


@andrew   (2002-01-22 15:30) [0]

есть грубо три таблицы: две - это справочники товаров(допустим t1) и дисконтных карт(t2), третья (t3) - журнал операций. Надо построить запрос к t3 так, чтобы вместо идентификаторов (id) карт вернулись номера карт. Что-то вроде Lookup поля в Delphi. Принципиально я знаю, как это сделать.

select t1.name as [Name_Tovar],
t2.num as [Card_Number]и далее др.поля
from t3
inner join t1 on t3.id_tovar=t1.id
inner join t2 on t3.id_card=t2.id

и т.д. И будет все хорошо, НО!
У меня необязательно к заполнению поле t3.id_card, а в этом случае мой запрос вообще не выдает строку, т.к. упирается в ошибку. А я хочу, чтобы в этом случае он выдал строку где пустой id_card, но написал в столбце Card_Number что-то типа: "без карты" и т.д. Как мне построить запрос?

Огромедное спасибо!

Или подскажите: может есть неплохой специальный форум по SQL?



Delirium   (2002-01-22 16:08) [1]

если я правильно понял, то ниже следующее, а сайт - www.sql.ru

select t1.name as Name_Tovar,
isNull(t2.num,"без карты") as Card_Number
from t3
inner join t1 on t3.id_tovar=t1.id
right join t2 on t3.id_card=t2.id



@andrew   (2002-01-22 16:39) [2]

нет не совсем то.
пример.
t2 t1
| id | num | | id | name |
| 1 | номер1 | | 1 | носки |
| 2 | номер2 | | 2 | ботинки |

t3
| id | id_tovar | id_card | что-то там........|
| 1 | 1 | 2 | -------------
| 2 | 1 | 1 | ----------
| 3 | 2 | 1 | ---------------
| 4 | 2 | NULL | -------------

Так вот хочу, чтобы запросом вернулось
| id | Name_Tovar | Card_Number | что-то там......|
| 1 | носки | номер2 |-------------
| 2 | носки | номер1 |-------------
| 3 | ботинки | номер1 |------------
| 4 | ботинки | без карты |-----------

Вот...
Мой запрос вернет вообще не вернет строку 4, не говоря о том, что чего-то там напишет.



Delirium   (2002-01-22 16:58) [3]

Если t2.num уже символьное, то Convert не нужен

select
t2.id,
t1.Name as Tovar_Name,
isNull(Convert(VarChar,t2.num),"без карты") as Card_Number
from t3
left join t1 on t3.id_tovar=t1.id
left join t2 on t3.id_card =t2.id



Спасибо   (2002-01-22 17:15) [4]

Удалено модератором




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.012 c
7-42875           pOintID               2001-11-07 16:09  2002.02.14  
MDI


1-42709           Arkady_B              2002-01-30 09:45  2002.02.14  
Прозрачные компоненты?


3-42702           ava                   2002-01-22 23:17  2002.02.14  
Как перенести, а затем востановить, данные из таблицы


1-42809           myportal              2002-01-30 17:29  2002.02.14  
CLX


14-42868          Voron                 2001-12-26 11:33  2002.02.14  
К создателям сайта: что с поиском твориться?