Форум: "Базы";
Поиск по всему сайту: 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.016 c
3-42695           saviola               2002-01-22 14:08  2002.02.14  
Работа с SQL в Делфи?


14-42856          nikols                2001-12-26 15:34  2002.02.14  
Приглашаем поговорить про CORBA и EJB.


1-42710           kay                   2002-01-30 11:56  2002.02.14  
Текстовик


6-42827           Lamok                 2001-11-22 00:20  2002.02.14  
TServerSocket


7-42886           amamed_3071           2001-11-09 13:41  2002.02.14  
Как Форму сохранит в DLL