Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Select su relazione n:m

4 views
Skip to first unread message

Ada

unread,
Aug 13, 2008, 12:40:27 PM8/13/08
to
Mysql 5

Ho tre tabelle con relazione molti a molti tra le tabelle Autori e
articoli.

AUTORI
idAutore
Nome

ARTICOLI
idArticolo
Titolo


ART_AUT
idAutore
idArticolo


Vorrei poter fare una Select che in base(ad esempio)a 2 autori mi
ritorni gli articoli che hanno scritto assieme, non mi riesce di fare
la select, mi date un aiuto ?.

ciao. Ada

Giacomo Degli Esposti

unread,
Aug 13, 2008, 2:40:25 PM8/13/08
to
Ada wrote:
> Vorrei poter fare una Select che in base(ad esempio)a 2 autori mi
> ritorni gli articoli che hanno scritto assieme, non mi riesce di fare
> la select, mi date un aiuto ?.

ciao.

Prova con "select articoli del primo autore where id_articolo in (select
articoli del secondo autore)"

ciao
Giacomo

Ada

unread,
Aug 14, 2008, 12:33:34 AM8/14/08
to
Giacomo Degli Esposti wrote:

Non ho capito se faccio una select per il primo autore

SELECT idArticolo FROM AUT_ART WHERE idAutore = 2

nella clausola where mi ritrovo idAutore e non idArticolo

mi potresti fare un esempio ?

Ciao Ada


Ada

unread,
Aug 14, 2008, 2:21:06 AM8/14/08
to
Ada wrote:

> Giacomo Degli Esposti wrote:
>> Prova con "select articoli del primo autore where id_articolo in
>> (select articoli del secondo autore)"

> Non ho capito se faccio una select per il primo autore

Sono riuscita :
SELECT idArticolo FROM AUT_ART WHERE "idAutore" = x AND idArticolo
IN(SELECT idArticolo FROM AUT_ART WHERE idAutore = y)

pare funzioni a dovere almeno con i dati di prova inseriti in tabella.

Grazie Giacomo per la dritta.

ciao ciao Ada.

Andrea [Work]

unread,
Aug 18, 2008, 9:53:12 AM8/18/08
to
Il Thu, 14 Aug 2008 08:21:06 +0200, Ada ha scritto:

> SELECT idArticolo FROM AUT_ART WHERE "idAutore" = x AND idArticolo
> IN(SELECT idArticolo FROM AUT_ART WHERE idAutore = y)
>
> pare funzioni a dovere almeno con i dati di prova inseriti in tabella.

Potresti fare anche una cosa del genere, dovrebbe andare (la IN mi piace
poco, a volta a prestazioni indecenti):

SELECT IdArticolo
FROM AUT_ART
WHERE idAutore IN (pippo,pluto,paperino)
GROUP BY IdArticolo
HAVING count(IdArticolo)=3

Ada

unread,
Aug 18, 2008, 11:26:59 AM8/18/08
to
Andrea [Work] wrote:

Non capisco Andrea perchè (IdArticolo)=3

Ciao Ada


orsopoeta

unread,
Aug 18, 2008, 12:45:06 PM8/18/08
to
Il 18/08/2008, Ada ha detto :

> Non capisco Andrea perchè (IdArticolo)=3
> Ciao Ada

il numero di articoli. non l'id...


Ada

unread,
Aug 18, 2008, 1:01:37 PM8/18/08
to
orsopoeta wrote:

Molto bene appena entro in possesso del db lo metto alla prova
confrontanto i due metodi.

Mille grazie ad Andrea[Work] e Orsopoeta

Ciao ciao Ada

0 new messages