Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 14:08   #1
Cerber24
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 38
По умолчанию Проблемы с запросом

Добрый день. Вопрос такой есть две таблицы: таблица1 имеет поля ID1 и ID2, таблица2 имеет поля ID2 и name. Есть запрос
Select name from таблица2 where id2 = (select id2 from таблица1 where id1=id1 ) Как нужно переписать запрос, что бы в случае, когда id2 пустое выводилось name тоже пустое. На данный момент запрос выводит только те name у кого есть id2.
Cerber24 вне форума Ответить с цитированием
Старый 31.03.2010, 14:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предположу что так:
Код:
Select name from таблица2 
left join таблица1 on (таблица2.id1=таблица1.id1)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2010, 14:14   #3
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

ну так выводится потому что ты условие ставишь такое, что id2 есть
предлагаю такой вариант:
Код:
SELECT T1.ID1, T1.ID2, (SELECT T2.NAME FROM Table2 T2 WHERE T2.ID2 = T1.ID2) AS Name FROM Table1 T1
...хотя знаешь задумалась, в какой из таблиц может не быть id2?
потому что если во второй, тогда зачем id2 в первой и наоборот?
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)

Последний раз редактировалось koma_grusha; 31.03.2010 в 14:18.
koma_grusha вне форума Ответить с цитированием
Старый 31.03.2010, 14:29   #4
Cerber24
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 38
По умолчанию

Id2 может быть пустым в таблице1, таблица2 является справочником имён, а нельзя допустим в самом запросе условие поставить какое нить?
Cerber24 вне форума Ответить с цитированием
Старый 31.03.2010, 14:34   #5
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

как я поняла вопрос: предположим у вас в таблице 1: ID1 = 1, ID2 = 0 (или Null), соответственно в таблице 2 нет записи с ID2 = 0
тогда по моему запросу у вас выйдет результат
ID1 | ID2 | Name
1 | 0 | Null
если хотите вместо Null просто '', то можно использовать
Код:
ISNULL((...), '') AS Name
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 31.03.2010, 15:10   #6
Cerber24
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 38
По умолчанию

Чет я немного запутался, у меня большой запрос строк так в 20 и каждую нужно переписывать. а нельзя допустим в это условие where id2 = (select id2 from таблица1 where id1=id1 ) что ли-бо добавить, типо если id2 пустое то выводить name равное null?
Cerber24 вне форума Ответить с цитированием
Старый 31.03.2010, 15:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
типо если id2 пустое то выводить name равное null?
А то что я предложил не помогает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2010, 16:46   #8
Cerber24
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 38
По умолчанию

Дело в том что, запрос у меня больше с несколькими условиями, выглядит примерно так
select T3.file, T2.name from T1, T3, T2
where T3.id = T1.id
and T2.id = (select T1.id from T1 where T1.id=ID )
понимаю туплю но как переписать последнее условие? под мою задачу? пробовал join воткунть не робит.
Cerber24 вне форума Ответить с цитированием
Старый 31.03.2010, 20:00   #9
Cerber24
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 38
По умолчанию

Дошло как join пользоваться, но всё равно так как вы написали Stilet, записи отображаются не коректно. Одна и таже запись оображается несколько раз, все поля у неё идентичны, меняется у неё лишь name как это исправить? подскажите пожалуйста
Cerber24 вне форума Ответить с цитированием
Старый 31.03.2010, 20:21   #10
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

я просто одного не пойму, смысл такого запроса
Код:
T2.id = (select T1.id from T1 where T1.id=ID )
это все равно что
Код:
T2.id = ID
может как то опишешь саму задачу, может пойщем какие нить другие варианты ее решения
потому что явно твои запрос некорректен, но не пойму в какую сторону тебе надо ее исправить
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с POST запросом через cURL LonRv PHP 0 28.12.2009 17:56
Сложности с запросом Kolik317 БД в Delphi 5 19.08.2009 12:09
Проблемы с POST запросом... JustKurt Работа с сетью в Delphi 1 26.07.2009 01:02
Проблема c запросом! SatS SQL, базы данных 6 24.01.2009 22:52
BETWEEN и LIKE одним запросом Pinya SQL, базы данных 9 19.08.2008 11:30