powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос.
11 сообщений из 11, страница 1 из 1
Помогите составить запрос.
    #38753440
Caterpillar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Есть табличка tb1

id | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Не получается составить запрос.
Если записей с одинаковым pid много, то вернуть записи у которых id максимальный(из тех у которых pid одинаковый) + если запись с pid единственная(т.е. нет записи с таким же pid) то вернуть ее, а в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0). Уже долго ломаю голову, ничего не лезет. Помоги, чем можете :)
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753451
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CaterpillarВсем привет.

Есть табличка tb1

id | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Не получается составить запрос.
Если записей с одинаковым pid много, то вернуть записи у которых id максимальный(из тех у которых pid одинаковый) + если запись с pid единственная(т.е. нет записи с таким же pid) то вернуть ее, а в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0). Уже долго ломаю голову, ничего не лезет. Помоги, чем можете :)

ну а где свои варианты?
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753456
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caterpillarа в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0)Не понял этот момент.
В приведенной таблице нет записей с pid равным 3,5,6,7,8,9,10 и т.д. до бесконечности. Что именно с ними нужно сделать?
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753458
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в лоб, то надо собирать результат из трёх частей

много пидов
один пид
ноль пидов.
первые два это вообщемто одна группа

1получить список айдишникв родителей без детей

2получить список айдишников где дети есть, притом сразу максимального айдишника

3обьеденить

4выбрать записи с айдишниками из списка полученого на шаге 3
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753612
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CaterpillarВсем привет.

Есть табличка tb1

id | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Не получается составить запрос.
Если записей с одинаковым pid много, то вернуть записи у которых id максимальный(из тех у которых pid одинаковый) + если запись с pid единственная(т.е. нет записи с таким же pid) то вернуть ее, а в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0). Уже долго ломаю голову, ничего не лезет. Помоги, чем можете :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from 
(
    select max(id), pid from tb1 where pid = вашпид group by pid having count(*) > 0
    union
    select id, pid from tb1 where pid = вашпид

) t limit 1
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753674
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixCaterpillarВсем привет.

Есть табличка tb1

id | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Не получается составить запрос.
Если записей с одинаковым pid много, то вернуть записи у которых id максимальный(из тех у которых pid одинаковый) + если запись с pid единственная(т.е. нет записи с таким же pid) то вернуть ее, а в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0). Уже долго ломаю голову, ничего не лезет. Помоги, чем можете :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from 
(
    select max(id), pid from tb1 where pid = вашпид group by pid having count(*) > 0
    union
    select id, pid from tb1 where pid = вашпид

) t limit 1



чтото мне кажеться что в хевинг не может быть каунт если его нету в выборке.

хевинг это как веар, только после групировки!!!

select a,count(*) 'total'
from table
group by a
having `total` > 5

===the same

select * from (select a,count(*) as 'total' from table group by a) where total > 5

первый если исправить с каунт, получит айди и пид по условию для случая наличия несколько родителей, а вот второй ..там тоже ошибочка айди=вашпид:)

но вцелом не подходит...

в условии
Не получается составить запрос.
Если записей с одинаковым pid много, то вернуть записи у которых id максимальный(из тех у которых pid одинаковый) + если запись с pid единственная(т.е. нет записи с таким же pid) то вернуть ее, а в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0). Уже долго ломаю голову, ничего не лезет. Помоги, чем можете :)

неявно присутсвует мысль...

из фразы
то вернуть записи у которых id максимальный(из тех у которых pid одинаковый)
следует что возвращаеться запись не одна.
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753691
Caterpillar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Если применить запрос, который я все не могу составить к этой таблице. То он должен вернуть

id | title | pid
3 | text | 0
5 | text | 1
6 | text | 2
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753695
Caterpillar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я могу получить нужные мне данные средствами какого-нибудь языка программирования(php как вариант). Но хочется красивого решения на sql
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753725
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CaterpillarЯ могу получить нужные мне данные средствами какого-нибудь языка программирования(php как вариант). Но хочется красивого решения на sql

1получить список айдишникв родителей без детей

2получить список айдишников где дети есть, притом сразу максимального айдишника

3обьеденить

4выбрать записи с айдишниками из списка полученого на шаге 3

на каком шаге застопорился?
или ждёшь чтоб весь запрос ктото сел и расписал...
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753889
Caterpillar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453CaterpillarЯ могу получить нужные мне данные средствами какого-нибудь языка программирования(php как вариант). Но хочется красивого решения на sql

1получить список айдишникв родителей без детей

2получить список айдишников где дети есть, притом сразу максимального айдишника

3обьеденить

4выбрать записи с айдишниками из списка полученого на шаге 3

на каком шаге застопорился?
или ждёшь чтоб весь запрос ктото сел и расписал...

Не жду.

на 2 шаге.

1. SELECT `tb1`.`id` FROM `tb1` WHERE `tb1`.`pid` = 0;
2. SELECT `tb1`.`id` FROM `tb1` WHERE `tb1`.`pid` > 0; Вернет айдишники детей, только как вернуть максимальные?

На этом пока все :(
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38753906
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caterpillarid | title | pid
1 | text | 0
2 | text | 0
3 | text | 0
4 | text | 1
5 | text | 1
6 | text | 2

Если применить запрос, который я все не могу составить к этой таблице. То он должен вернуть

id | title | pid
3 | text | 0
5 | text | 1
6 | text | 2

но это же проще паренной репы!! просто взять максимумы из каждой группы!! например вот так

Код: sql
1.
select * from tb1 natural join (select max(id), pid from tb1 group by pid) t 
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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