Я новичок в SQL, и у меня есть база данных SQL с двумя столбцами, которые в комбинации являются уникальными (но их индивидуальные значения не являются): songID
и artistID
. Каждая песня записана разными исполнителями, и каждый исполнитель записал разные песни (см. Код ниже). Теперь я хочу получить информацию о том, кто с кем сотрудничал.
Я пытался
SELECT songID, COUNT(songID) FROM mytable
GROUP BY artist ID;
но это не совсем дает мне те результаты, которых я хочу.
Рассмотрим этот пример кода:
CREATE TABLE "mytable" ("songID" int, "artistID" int);
INSERT INTO mytable ('songID', 'artistID') VALUES (1, 101), (1, 102), (1, 103), (2, 102), (2, 103), (3, 101), (3, 104);
Желаемый результат получается логически, глядя на идентификатор песни, например: songID
= 1: artistID
s = {101, 102, 103}
, поэтому у исполнителя 101
есть одна общая песня с исполнителем 102
и одна с исполнителем 103
, а Artist 102
дополнительно имеет одну общую песню с исполнителем 103
. (Повторите для каждого songID
). Таким образом, желаемый результат выглядит примерно так:
"artist combinations" "count"
"101 & 102" 1
"101 & 103" 1
"101 & 104" 1
"102 & 103" 2
"102 & 104" 0
"103 & 104" 0
В идеале я бы отсортировал это по count
. Может ли кто-нибудь указать мне правильное направление?