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
Форумы портала PHP.SU :: Версия для печати :: Запрос в запросе
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Запрос в запросе

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

1. белочка - 31 Июля, 2012 - 07:39:10 - перейти к сообщению
есть запрос к базе My SQL:

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

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

реально ваще? подскажите как
2. Zuldek - 31 Июля, 2012 - 09:47:25 - перейти к сообщению
SELECT IF(value, (SELECT somedata FROM sometable),'')
http://www[dot]mysql[dot]ru/docs/man/Con[dot][dot][dot]w_functions[dot]html
3. белочка - 31 Июля, 2012 - 10:08:50 - перейти к сообщению
попробовала сделать. сделала так:

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

что я не так делаю?
4. tuareg - 31 Июля, 2012 - 10:28:22 - перейти к сообщению
В данном случае подзапрос (а правильно это называется так Улыбка ) Должен вернуть только одну строку(один результат), а у Вас он возвращает несколько строк
5. белочка - 31 Июля, 2012 - 10:37:52 - перейти к сообщению
ммм... потестировала. в тех запросах где caps.set_code во всех строках NULL все нормуль. а в других запросах выдает то, что написала.
и как быть? set_code повторяется в таблице caps, но он уникален в таблице cap_sets. тойсть запрос должен выдавать одно и тоже значание каждый раз, как видит определенный caps.set_code
6. tuareg - 31 Июля, 2012 - 10:53:28 - перейти к сообщению
Давайте проще.
Во первых, сколько результатов вернет запрос
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?
7. белочка - 31 Июля, 2012 - 11:31:48 - перейти к сообщению
[quote=tuareg][/quote]

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

 

Powered by ExBB FM 1.0 RC1