Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запрос в запросе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
белочка
Отправлено: 31 Июля, 2012 - 07:39:10
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




есть запрос к базе My SQL:

SELECT [здесь куча всяких полей]
FROM [здесь куча всяких таблиц]
WHERE [здесь куча всяких условий]

и вот, для одного из полей в селекте нужно сделать дополнительно свой запрос внутри большого запроса, чтобы он выбирал данные из другой таблицы если значение одного из полей в основном селекте не NULL и ничего не делал если NULL. и там тоже свои FROM и WHERE. и этот второй селект нужно как то вставить внутрь основного селекта.
пыталась ставить разными способами но или ничего не выдается или ошибка

реально ваще? подскажите как
 
 Top
Zuldek
Отправлено: 31 Июля, 2012 - 09:47:25
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




SELECT IF(value, (SELECT somedata FROM sometable),'')
http://www[dot]mysql[dot]ru/docs/man/Con[dot][dot][dot]w_functions[dot]html

(Отредактировано автором: 31 Июля, 2012 - 09:48:06)

 
 Top
белочка
Отправлено: 31 Июля, 2012 - 10:08:50
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




попробовала сделать. сделала так:

SELECT [здесь куча всяких полей]
IF(caps.set_code IS NOT NULL, (SELECT cap_sets.set_code AND cap_sets.set_name FROM caps, cap_sets WHERE caps.set_code = cap_sets.set_code),''),
FROM [здесь куча всяких таблиц]
WHERE [здесь куча всяких условий]

выдается:
Invalid query 2: Subquery returns more than 1 row

что я не так делаю?
 
 Top
tuareg
Отправлено: 31 Июля, 2012 - 10:28:22
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




В данном случае подзапрос (а правильно это называется так Улыбка ) Должен вернуть только одну строку(один результат), а у Вас он возвращает несколько строк
 
 Top
белочка
Отправлено: 31 Июля, 2012 - 10:37:52
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




ммм... потестировала. в тех запросах где caps.set_code во всех строках NULL все нормуль. а в других запросах выдает то, что написала.
и как быть? set_code повторяется в таблице caps, но он уникален в таблице cap_sets. тойсть запрос должен выдавать одно и тоже значание каждый раз, как видит определенный caps.set_code

(Отредактировано автором: 31 Июля, 2012 - 10:39:09)

 
 Top
tuareg
Отправлено: 31 Июля, 2012 - 10:53:28
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Давайте проще.
Во первых, сколько результатов вернет запрос
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT cap_sets.set_code AND cap_sets.set_name FROM caps, cap_sets WHERE caps.set_code = cap_sets.set_code
  3.  

Во вторых, что вообще за синтаксис такой? Какой AND?
 
 Top
белочка
Отправлено: 31 Июля, 2012 - 11:31:48
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




[quote=tuareg][/quote]

у вас это обычный запрос (см в начале), а мне внутрь такого нужно вставть еще один подзапрос с IF ... IS NOT NULL. если просто так написать подтягиваются все поля NULL и получается хрень
 
 Top
белочка
Отправлено: 31 Июля, 2012 - 16:20:35
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




что, никто не знает? Огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB