Problema SQL

di il
2 risposte

Problema SQL

Non ho idea di come risolvere questo problema (sto lavorando su PostgreSQL):
ho una tabella (chiamata "featuring") in cui sono elencate le "featuring" tra alcuni cantanti:
('Shakira'     ,     'Rihanna'),
('Eminem'    ,      'Rihanna'), 
('Sia'     ,      'Eminem'),
('SeanPaul'     ,      'Sia'),
('Queen'    ,      'DavidBowie'),
('LadyGaga'     ,      'Beyonce' )  ,
('LadyGaga'     ,      'Eminem');
Io devo elencare le coppie di artisti che non hanno mai collaborato tra loro ma hanno collaborato con un terzo artista. Questo è quello che ho fatto, e funziona:
-- tuple che hanno il 2° artista uguale
SELECT DISTINCT f1.artist_1, f2.artist_1
FROM featuring f1 join featuring f2 on (f1.artist_2 = f2.artist_2)
WHERE f1.artist_1 < f2.artist_1 
	and (f1.artist_1, f2.artist_1) not in 
	(
	SELECT f3.artist_1, f3.artist_2
	FROM featuring f3
	WHERE f3.artist_1 < f3.artist_2
	)
union

-- tuple che hanno il 1° artsita uguale

SELECT DISTINCT f1.artist_2, f2.artist_2
FROM featuring f1 join featuring f2 on (f1.artist_1 = f2.artist_1)
WHERE f1.artist_2 < f2.artist_2
	and (f1.artist_2, f2.artist_2) not in 
	(
	SELECT f3.artist_1, f3.artist_2
	FROM featuring f3
	WHERE f3.artist_1 < f3.artist_2
	)

union

-- coppie di tuple che hanno l'artista uguale nella 1° col (1° tupla) e nella 2° (2° tupla)
SELECT DISTINCT f1.artist_2, f2.artist_1
FROM featuring f1 join featuring f2 on (f1.artist_1 = f2.artist_2)
WHERE f1.artist_2 < f2.artist_1
	and (f1.artist_1, f2.artist_2) not in 
	(
	SELECT f3.artist_1, f3.artist_2
	FROM featuring f3
	WHERE f3.artist_1 < f3.artist_2
	)

union

-- coppie di tuple che hanno l'artista uguale nella 2° col (1° tupla) e nella 1° (2° tupla)
SELECT DISTINCT f1.artist_1, f2.artist_2
FROM featuring f1 join featuring f2 on (f1.artist_2 = f2.artist_1)
WHERE f1.artist_1 < f2.artist_2
	and (f1.artist_1, f2.artist_2) not in 
	(
	SELECT f3.artist_1, f3.artist_2
	FROM featuring f3
	WHERE f3.artist_1 < f3.artist_2
	)
Ora però devo anche farlo in un altro modo; come posso fare?

2 Risposte

  • Re: Problema SQL

    lollo_rese ha scritto:


    sto lavorando su PostgreSQL
    Non conosco questa applicazione.
    In questo forum si parla di "progettazione database".
    Secondo una MIA logica dovresti associare tutti gli Artisti a ogni SINGOLO "brano registrato"...dove per brano registrato intendo proprio l'incisione/registrazione...ossia "interpretazione": nulla a che vedere con l'authority.
  • Re: Problema SQL

    OsvaldoLaviosa ha scritto:


    lollo_rese ha scritto:


    sto lavorando su PostgreSQL
    Non conosco questa applicazione.
    Osvaldo, PostgreSQL è un database, non un'applicazione.

    OsvaldoLaviosa ha scritto:


    In questo forum si parla di "progettazione database".
    Appunto.
Devi accedere o registrarti per scrivere nel forum
2 risposte