169 похожих чатов

Query result: +----+---------+----------+ | Id | name_id | position | +----+---------+----------+ | 1

| 1 | Master |
| 2 | 2 | Slave |
| 3 | 3 | Dude |
| 4 | 4 | Killer |
| 5 | 5 | Master |
| 6 | 5 | Dude |
| 7 | 6 | Slave |
| 8 | 3 | Master |
+----+---------+----------+
Affected rows: 8

Query result:
+----+---------+-----+
| Id | Name | Old |
+----+---------+-----+
| 1 | Tom | 12 |
| 2 | Lucy | 99 |
| 3 | Frank | 20 |
| 4 | Jane | 99 |
| 5 | Robert | 1 |
| 6 | Session | 20 |
+----+---------+-----+
Affected rows: 6

Query result:
+---------+-----+--------------------------+
| Name | Old | GROUP_CONCAT(s.position) |
+---------+-----+--------------------------+
| Jane | 99 | Killer |
| Lucy | 99 | Slave |
| Frank | 20 | Master,Dude |
| Session | 20 | Slave |
| Robert | 1 | Dude,Master |
+---------+-----+--------------------------+
Affected rows: 5

Есть две таблички, я их джойню, необходимо выбрать имя, возраст и роль всех одногодок.

SELECT n.Name, n.Old, GROUP_CONCAT(s.position)
FROM NAMES n
LEFT JOIN STATS s
ON n.Id = s.name_id

GROUP BY n.Name, n.Old
HAVING n.Old IN (

SELECT names.Old
FROM NAMES names
LEFT JOIN STATS stats
ON names.Id = stats.name_id
GROUP BY names.Old
HAVING COUNT(names.Old) > 1
)
ORDER BY n.Old DESC;


Но у меня выходит нечто громоздкое + если один и тот же человек встречается дважды - он становится одногодкой с самим собой.
Есть ли способ решить задачу, используя всего один селект? Предполагаю, копать надо в сторону селфджойна уже сделанного джойна?

SELECT * JOIN выглядит следующим образом

Query result:
+----+---------+-----+----+---------+----------+
| Id | Name | Old | Id | name_id | position |
+----+---------+-----+----+---------+----------+
| 1 | Tom | 12 | 1 | 1 | Master |
| 2 | Lucy | 99 | 2 | 2 | Slave |
| 3 | Frank | 20 | 8 | 3 | Master |
| 3 | Frank | 20 | 3 | 3 | Dude |
| 4 | Jane | 99 | 4 | 4 | Killer |
| 5 | Robert | 1 | 6 | 5 | Dude |
| 5 | Robert | 1 | 5 | 5 | Master |
| 6 | Session | 20 | 7 | 6 | Slave |
+----+---------+-----+----+---------+----------+
Affected rows: 8

5 ответов

24 просмотра

Select * from table as a Inner join table as b on b.old = a.old and b.id != a.id Должен получить одногодок. Остальные таблицы, наверное, получится самостоятельно добавить.

А можно таблицы с данными на SQLize.online запостить?

https://sqlize.online/sql/mysql57/1c186b659a2b6fab95be600b6b6f7ee9/

Skipping Stone- Автор вопроса
Slava Rozhnev SQLtest.online https://phpize.online
А можно таблицы с данными на SQLize.online запости...

Ой, я отходил, прошу прощения, не дал наполнение таблиц. Спасибо за решения, я их внимательно исследую ❤️

Skipping Stone- Автор вопроса
Nikita Sysoev
Select * from table as a Inner join table as b on ...

офигенно, спасибо большое

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта