Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работают запросы в phpMyAdmin / 25 сообщений из 29, страница 1 из 2
05.02.2016, 10:11:28
    #39163575
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Всем привет! Народ, вот такой вопрос, в phpMyAdmin не работает простейший запрос.

Есть таблица:
id name pid (parent_id)1 Раздел_1 02 Раздел_2 03 Раздел_3 04 Раздел_4 05 Подраздел 1.1 16 Подраздел 1.2 17 Подраздел 1.3 18 Подраздел 2.1 29 Подраздел 2.2 210 Подраздел 1.1.1 511 Подраздел 1.1.2 512 Подраздел 1.1.2.1 1113 Подраздел 3.1 314 Подраздел 4.1 415 Подраздел 4.2 4

Мне надо сделать выборку записей без родителей, с тремя и более потомками, ну т.е. те, у которых pid=0, с 3 и более дочерними узлами, а это только запись "Раздел_1", т.к. на него ссылаются Подраздел 1.1, Подраздел 1.2 и Подраздел 1.3.

Пишу запрос в phpMyAdmin:

Код: sql
1.
SELECT name FROM `catalogue` WHERE pid IN (SELECT id FROM catalogue WHERE pid=0) 

Нормально работает, но только частично решает задачу.

Потом пишу например вот такой запрос:
Код: sql
1.
2.
Set @kol=SELECT COUNT(name) FROM catalogue WHERE pid=0;
SELECT @kol;



Не то, что мне требуется, но даже он не работает. Помогите пожалуйста, это я неправильно запрос составил, или phpMyAdmin может как то надо настроить? Всё на хостинге beget.ru лежит
...
Рейтинг: 0 / 0
05.02.2016, 10:41:53
    #39163612
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63Мне надо сделать выборку записей без родителей, с тремя и более потомками, ну т.е. те, у которых pid=0, с 3 и более дочерними узлами
Ну так и пишите запрос, выполняющий именно эту выборку.
Потребуется 2 копии таблицы.
...
Рейтинг: 0 / 0
05.02.2016, 11:11:05
    #39163665
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Так я не знаю как его составить. Сделал только выборку тех записей, у которых нет родителя:

Код: sql
1.
SELECT id FROM catalogue WHERE pid=0


И отдельно выборку дочерних записей:
Код: sql
1.
SELECT name FROM `catalogue` WHERE pid IN (SELECT id FROM catalogue WHERE pid=0)



мне надо как то подсчитать для каждой записи из 1-й выборки, количество её дочерних, и если больше 3, то вывести эту запись.
Т.е. надо Count как то использовать. Для каждой записи из 1-й выборки свой счётчик завести, как то так, но вот реализовать не могу, не получается. Переменные тоже использовать пробовал, но не работает
...
Рейтинг: 0 / 0
05.02.2016, 12:06:37
    #39163737
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Свяжите две копии таблицы по связи родитель=>потомок.
Отберите только родителей, не имеющих родителей.
Сгруппируйте по родителю и посчитайте потомков.
Оставьте тех, у кого потомков не менее 3.
Типа
Код: sql
1.
2.
3.
4.
5.
SELECT t1.*
FROM table t1, table t2
WHERE table1.pid = 0 AND table2.pid = table1.id
GROUP BY t1.id
HAVING COUNT([DISTINCT] t2.id) >= 3
...
Рейтинг: 0 / 0
05.02.2016, 13:17:47
    #39163841
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
А как сделать копию таблицы? Пробую сделать копию через переменную, но phpMyAdmin выдаёт ошибку:

Код: sql
1.
2.
SET @table1=SELECT * FROM catalogue WHERE pid=0
SELECT @table



авторStatic analysis:

2 errors were found during analysis.

A new statement was found, but no delimiter between it and the previous one. (near "SELECT" at position 12)
This type of clause was previously parsed. (near "SELECT" at position 49)

Как быть?
...
Рейтинг: 0 / 0
05.02.2016, 13:44:57
    #39163891
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63А как сделать копию таблицы?во-первых, зачем?
а во-вторых, create table + insert into ... select from
...
Рейтинг: 0 / 0
05.02.2016, 13:55:02
    #39163923
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Ну это я отвечал на пост Akina . Сейчас попробую с Create Table. Просто думал может можно как то в переменную засунуть все данные из копируемой таблицы, не создавая её
...
Рейтинг: 0 / 0
05.02.2016, 14:01:38
    #39163939
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63Сейчас попробую с Create Table. Просто думал может можно как то в переменную засунуть все данные из копируемой таблицы, не создавая еёНе надо создавать физическую копию. Нужна всего лишь логическая копия (т.е. та же таблица под другим именем), как создавать которую Akina уже показал - 18776672 .
...
Рейтинг: 0 / 0
05.02.2016, 14:17:21
    #39163963
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Пробовал я этот запрос делать - ну не работает он, ошибки выдаёт:

авторStatic analysis:

8 errors were found during analysis.

Unexpected character. (near "[" at position 116)
Unexpected character. (near "]" at position 125)
An expression was expected. (near "table" at position 18)
Unrecognized keyword. (near "table" at position 18)
Unexpected token. (near "t1" at position 24)
Unexpected token. (near "," at position 26)
Unrecognized keyword. (near "table" at position 28)
Unexpected token. (near "t2" at position 34)
...
Рейтинг: 0 / 0
05.02.2016, 14:46:28
    #39164013
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63как сделать копию таблицы?
Где я писал слово "сделать"???

fenix_63ошибки выдаёт
MySQL не выдаёт ТАКИЕ сообщения об ошибках. Это первое.
И второе - если тебе ответили, это не значит, что надо отключить мозг и тупо копипастить.
...
Рейтинг: 0 / 0
05.02.2016, 15:11:12
    #39164054
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Что к словам то цепляться? Связать копии надо JOIN'ами, но мне эти самые копии то как то получить сначала надо, вот я тут и спрашивал
...
Рейтинг: 0 / 0
05.02.2016, 15:20:18
    #39164068
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63Связать копии надо JOIN'ами
Вот потому и цепляться! Это же надо быть дважды слепым, чтобы не увидеть в строке
Код: sql
1.
FROM table t1, table t2


двух копий таблицы!
...
Рейтинг: 0 / 0
05.02.2016, 15:32:37
    #39164095
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Ок, может и не заметил, так я ж не профи. Как тогда от этих багов избавиться, кроме квадратных скобок у DISTINCT ( https://fotki.yandex.ru/next/users/tltfenix/album/74102/view/992210 )? Это мне phpMyAdmin выдал. Да, сейчас тупо скопировал.
...
Рейтинг: 0 / 0
05.02.2016, 15:36:56
    #39164105
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
таблицу `table` называть не надо, или возьмите ее в апострофы

Akina привел для примера
...
Рейтинг: 0 / 0
05.02.2016, 15:38:49
    #39164108
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Ну, во-первых, неплохо бы заменить слово table на имя своей таблицы. На всякий случай уточню - это нужно проделать тоже в двух экземплярах.
Во-вторых, квадратные скобке в MySQL-коде всегда обозначают компонент, который должен либо включаться, либо нет, в зависимости от требуемой логики. С обязательным удалением этих скобок, само собой. Вот и подумай, требует ли ТВОЯ логика наличия DISTINCT или нет.
Ну и алиасы поменяй, чтобы они везде были одни и те же.
...
Рейтинг: 0 / 0
05.02.2016, 15:40:49
    #39164112
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Alex_Ustinov,

и не чудите... вы дали алиасы t1 t2
В дальнейшем обращаетесь по псевдонимам.... t1.poleN t2.poleM ... (откуда у вас table1 table2 на картинке?)
...
Рейтинг: 0 / 0
05.02.2016, 15:44:18
    #39164120
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Alex_Ustinovоткуда у вас table1 table2 на картинке?
Я так написАл от руки. А он тупо скопипастил, не пытаясь понять сути происходящего. За что, собственно, и был грубо обруган.
...
Рейтинг: 0 / 0
05.02.2016, 15:58:04
    #39164150
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Фантастика, работает, спасибо народ огромное.
Рабочий код:

Код: sql
1.
SELECT t1.* FROM catalogue t1, catalogue t2 WHERE t1.pid = 0 AND t2.pid = t1.id GROUP BY t1.id HAVING COUNT( t2.id) >= 3



DISTINCT убрал, т.к. допускаются повторения

P.S. не злитесь народ что туплю, ну бывают случаи что ну никак не доходит, хоть часами гугли и примеры смотри

P.P.S. Оставьте пожалуйста тему открытой.
...
Рейтинг: 0 / 0
08.02.2016, 14:08:50
    #39165547
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Народ, ещё есть вопрос: Как сделать выборку записей без потомков, но с 2-мя старшими родителями?

Есть вот что:
Код: sql
1.
SELECT t2.* FROM catalogue t1, catalogue t2 WHERE t1.pid!=0 AND t2.pid!=0 AND t2.pid=t1.id



Но такой запрос выдаёт лишнюю запись Подраздел 1.1.2.1 ((
...
Рейтинг: 0 / 0
08.02.2016, 14:24:50
    #39165561
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Akina,

я это понял... вопрос был к ТС...
...
Рейтинг: 0 / 0
08.02.2016, 15:54:12
    #39165680
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63такой запрос выдаёт лишнюю запись Подраздел 1.1.2.1 ((Это почему же она - лишняя?

fenix_63
Код: sql
1.
t2.pid!=0 AND t2.pid=t1.id

Приглядитесь к этой паре условий повнимательнее...

fenix_63сделать выборку записей без потомков, но с 2-мя старшими родителями
Слабопонятная формулировка, на самом деле...
...
Рейтинг: 0 / 0
09.02.2016, 08:10:11
    #39166188
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Akinafenix_63сделать выборку записей без потомков, но с 2-мя старшими родителями
Слабопонятная формулировка, на самом деле...Да что там непонятного, ему нужны все потомки второго уровня (внуки то есть).
...скорее всего :)
...
Рейтинг: 0 / 0
09.02.2016, 08:52:26
    #39166205
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
tanglirему нужны все потомки второго уровня
Возможно... а, может, и "не менее чем второго". У потомка третьего уровня вполне себе имеется "2 старших родителя", и нигде не сказано, что их должно быть строго два, а не больше. Так что сначала надо заставить ТС самого понять, что же ему на самом деле надо, и заставить это правильно сформулировать.
...
Рейтинг: 0 / 0
09.02.2016, 14:13:31
    #39166637
fenix_63
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
Нужны записи без потомков, но с 2-мя старшими родителями.

Т.е. нужны записи, НА КОТОРЫЕ нет ссылок, и у которых как минимум есть 2 родителя - т.е. условно "отец", и "дед". "Прадеды" и "Пра-прадеды" даже если они и есть - их выводить не нужно.

Akina , да, я сейчас по-внимательнее условие почитал - точно, запрос то мой верный ))

https://fotki.yandex.ru/next/users/tltfenix/album/74102/view/992336
...
Рейтинг: 0 / 0
09.02.2016, 14:45:46
    #39166680
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают запросы в phpMyAdmin
fenix_63нужны записи, НА КОТОРЫЕ нет ссылок, и у которых как минимум есть 2 родителя - т.е. условно "отец", и "дед". "Прадеды" и "Пра-прадеды" даже если они и есть - их выводить не нужно.
А теперь в свете этой информации растолкуйте, почему
fenix_63запись Подраздел 1.1.2.1
названа лишней?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работают запросы в phpMyAdmin / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]