powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Список групп индикацией вхождения объекта в группу
16 сообщений из 16, страница 1 из 1
Список групп индикацией вхождения объекта в группу
    #38753997
Добрый день.
Извините за возможно глупый вопрос.
Помогите пожалуйста составить запрос, либо подскажите, как правильнее реализовать следующее:
Имеются две таблицы: 1) groups с полями [ID; GROUPNAME] и 2) objects_groups [OBJECTID; GROUPID]
Задача простая. Вывести список всех групп с отметками, в какую группу входят объекты из условия WHERE.

Например таблицы имеют вид:
groups
Код: sql
1.
2.
3.
4.
1 | Group 1
2 | Group 2
3 | Group 3
4 | Group 4



object_groups
Код: sql
1.
2.
3.
4.
5.
1 | 1
1 | 3
2 | 1
2 | 2
1 | 4



Нужно получить на выходе, при использовании условия WHERE OBJECTID = 1 следующее:
Код: sql
1.
2.
3.
4.
Group 1 | 1
Group 2 | null
Group 3 | 1
Group 4 | 1



Спасибо за ваше время.
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754013
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так:

Код: sql
1.
select g.tit, og.id from groups g left join object_groups og where og.id = 1
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754024
Lumixвот так:

Код: sql
1.
select g.tit, og.id from groups g left join object_groups og where og.id = 1



Видимо, вместо where имелось ввиду on ?
Код: sql
1.
select g.groupname, og.objectid from groups g left join objects_groups og where og.objectid = 1


К сожалению, запрос выводит:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Group 1 | 1
Group 2 | 1
Group 3 | 1
Group 4 | 1
Group 1 | 1
Group 2 | 1
Group 3 | 1
Group 4 | 1
Group 1 | 1
Group 2 | 1
Group 3 | 1
Group 4 | 1


А при условии WHERE og.id = 2 выводит:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Group 1 | 2
Group 2 | 2
Group 3 | 2
Group 4 | 2
Group 1 | 2
Group 2 | 2
Group 3 | 2
Group 4 | 2
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754029
Код: sql
1.
select g.groupname, og.objectid from groups g left join objects_groups og on og.objectid = 1
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754035
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Бондарь
Код: sql
1.
select g.groupname, og.objectid from groups g left join objects_groups og on og.objectid = 1



Помогло?
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754041
Lumix,

К сожалению нет. Вывод выше привел. С where вообще не работает.
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754043
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис БондарьLumix,

К сожалению нет. Вывод выше привел. С where вообще не работает.

эх...))) я просто надеялся что может быть бывают исключения...))) но каждый день одно и то же..)))
короче правильно вот так


Код: sql
1.
2.
3.
4.
select g.groupname, og.objectid 
    from groups g left join objects_groups og on g.objectid = og.objectid  

where og.objectid = 1
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754056
LumixДенис БондарьLumix,

К сожалению нет. Вывод выше привел. С where вообще не работает.

эх...))) я просто надеялся что может быть бывают исключения...))) но каждый день одно и то же..)))
короче правильно вот так


Код: sql
1.
2.
3.
4.
select g.groupname, og.objectid 
    from groups g left join objects_groups og on g.objectid = og.objectid  

where og.objectid = 1



Ну :) Это был мой первый вариант, который не заработал, как и многие другие варианты. Именно поэтому я обратился сюда.
Такая выборка выводи только те группы, в которые входит объект. Группы, в которые он не входит не выводятся.
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754079
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Бондарь,

тогда вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select groupname, if 
(
    exists
    (
        select * from groups g join object_groups og on (g.id = og.object_id) 
            where og.id = 1 and g.id = b.id
    )

    , 1
    , null
) st 

from a1 b;
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754083
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариант

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select b.groupname, t.st from groups b left join
(
    select g.id id, 1 as st from groups g join object_groups og 
         on (g.id = og.groupid) 
    where og.id = 1

) t 

on b.id = t.id
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754230
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select g.groupname, count(og.objectid) cnt
from groups g 
left join object_groups og 
on g.id = og.groupid and og.objectid=1



Lumix
Код: sql
1.
... left join object_groups og where og.id = 1


Так левое соединение вырождается во внутреннее.
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754231
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон,

Код: sql
1.
2.
3.
4.
5.
select g.groupname, count(og.objectid) cnt
from groups g 
left join object_groups og 
on g.id = og.groupid and og.objectid=1
group by g.groupname
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754259
Lumix , Akina , большое спасибо за помощь!

Заработал как нужно последний вариант. Мне стыдно, что сам не мог додуматься до этого. Всё гениальное - просто.

Akina
Код: sql
1.
2.
3.
4.
5.
select g.groupname, count(og.objectid) cnt
from groups g 
left join object_groups og 
on g.id = og.groupid and og.objectid=1
group by g.groupname



Хорошего вам дня!
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38754414
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Бондарь Lumix , Akina , большое спасибо за помощь!

Заработал как нужно последний вариант. Мне стыдно, что сам не мог додуматься до этого. Всё гениальное - просто.

Akina
Код: sql
1.
2.
3.
4.
5.
select g.groupname, count(og.objectid) cnt
from groups g 
left join object_groups og 
on g.id = og.groupid and og.objectid=1
group by g.groupname



Хорошего вам дня!

блин, опять у меня демотивация... я как лох думал, что по условиям задачи в пустом месте должен быть null, а оказывается человека у ноль устраивает... жизнь - боль!!!
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38755208
Lumix,

Извините :)
"Задача простая. Вывести список всех групп с отметками, в какую группу входят объекты из условия."
Неважно, какие это будут отметки. Главное каким-то образом показать, в какие группы входит объект.

Спасибо за Вашу помощь! Ваши варианты тоже помогли разобраться как должно работать. Так что Ваши старания не в пустую. Уверяю Вас!
...
Рейтинг: 0 / 0
Список групп индикацией вхождения объекта в группу
    #38755229
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Бондарь,

у меня лично к вам нет претензий. У меня претензии как бы к природе вещей...))
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Список групп индикацией вхождения объекта в группу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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