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 :: SQL запрос

 PHP.SU

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


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

> Описание: SQL запрос
Dee
Отправлено: 23 Января, 2015 - 00:01:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Нояб. 2012  


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




Есть таблица
Нажмите для увеличения

Выбрать из таблицы все узлы которые не имеют родителей, но при этом содержат
не менее 3 прямых потомков.

Т е на выходе мы должны получить

Комплектующие ( 3 потомка )

Все для авто ( 4 потомка )

нужно сугубо SQL запрос
 
 Top
kotyara1979
Отправлено: 23 Января, 2015 - 00:13:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


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




Попробуйте такую конструкцию. Не уверен, что оптимально по скорости, но работать должно.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name AS s1 WHERE s1.parent IS NULL AND s1.id IN (SELECT s2.parent FROM table_name AS s2 WHERE s1.parent IS NOT NULL GROUP BY s2.parent HAVING count(*)>=3)


-----
Сделать можно все. Главное одеть каску.
 
 Top
Dee
Отправлено: 23 Января, 2015 - 00:31:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Нояб. 2012  


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




к сожалению не работает (
 
 Top
kotyara1979
Отправлено: 23 Января, 2015 - 00:36:05
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


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




"не работает" в чем выражается?

Дамп таблицы с create выложите, с нужными строками.

Оп. В коде, который вам отдал, ошибка. Вот правильный.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name AS s1 WHERE s1.parent IS NULL AND s1.pid IN (SELECT s2.parent FROM table_name AS s2 WHERE s2.parent IS NOT NULL GROUP BY s2.parent HAVING count(*)>=3)

(Отредактировано автором: 23 Января, 2015 - 00:44:26)



-----
Сделать можно все. Главное одеть каску.
 
 Top
Dee
Отправлено: 23 Января, 2015 - 01:26:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Нояб. 2012  


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




все крутяк,работает )
(Добавление)
Dee пишет:
все крутяк,работает )


а такое еще возможно ?)

Выбрать из ране приведенной таблице все узлы которые имеют только двух старших родителей, но при этом не имеют потомков.

Должно вывести
-> -> светодиодные лампы
-> -> энергосберегающие лампы
-> -> Пленка для дисков
-> -> Продвинутые балончики с краской

дамп таблицы https://yadi[dot]sk/d/JqIwpCaQeBB7g

(Отредактировано автором: 23 Января, 2015 - 01:37:18)

 
 Top
kotyara1979
Отправлено: 23 Января, 2015 - 08:02:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


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




попробуйте так.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM pages AS s1 WHERE s1.parent IS NOT NULL AND s1.parent IN (SELECT s2.pid FROM pages AS s2 LEFT JOIN pages AS s3 ON s2.parent = s3.pid WHERE s2.parent IS NOT NULL AND s3.parent IS NULL) AND  NOT EXISTS(SELECT s4.parent FROM pages AS s4 WHERE s4.parent = s1.pid)


-----
Сделать можно все. Главное одеть каску.
 
 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