Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос. / 11 сообщений из 11, страница 1 из 1
22.09.2014, 13:18:20
    #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
22.09.2014, 13:23:01
    #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
22.09.2014, 13:26:40
    #38753456
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос.
Caterpillarа в случае полного отсутствия записей с pid вернуть родительский элемент(т.е. с pid равным 0)Не понял этот момент.
В приведенной таблице нет записей с pid равным 3,5,6,7,8,9,10 и т.д. до бесконечности. Что именно с ними нужно сделать?
...
Рейтинг: 0 / 0
22.09.2014, 13:27:58
    #38753458
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос.
если в лоб, то надо собирать результат из трёх частей

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

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

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

3обьеденить

4выбрать записи с айдишниками из списка полученого на шаге 3
...
Рейтинг: 0 / 0
22.09.2014, 15:28:37
    #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
22.09.2014, 16:12:03
    #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
22.09.2014, 16:22:03
    #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
22.09.2014, 16:23:38
    #38753695
Caterpillar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос.
Я могу получить нужные мне данные средствами какого-нибудь языка программирования(php как вариант). Но хочется красивого решения на sql
...
Рейтинг: 0 / 0
22.09.2014, 16:41:50
    #38753725
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос.
CaterpillarЯ могу получить нужные мне данные средствами какого-нибудь языка программирования(php как вариант). Но хочется красивого решения на sql

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

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

3обьеденить

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

на каком шаге застопорился?
или ждёшь чтоб весь запрос ктото сел и расписал...
...
Рейтинг: 0 / 0
22.09.2014, 18:59:17
    #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
22.09.2014, 19:28:14
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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