Buongiorno.
Praticamente ho una tabella con dei prodotti identificata da CodProdotto una tabella spedizioni identificata da IdSpedizione e una tabella ordini dove memorizzo i vari prodotti ordinati, quindi identificata da CodProdotto + IdSpedizione.

Vorrei creare una vista che visualizza una lista dei prodotti che sono stati venduta in coppia ordinati in base ai più venduti.

Io ho scritto questo secondo voi va bene??

codice:
-	Visualizza i prodotti più venduti in coppia
Vogliamo visualizzare le coppie di prodotti più venduti

CREATE VIEW cod_prodotti_venduti_coppia AS
    SELECT p1.CodProdotto as Prod1, p2.CodProdotto as Prod2 FROM prodotti as p1 JOIN prodotti as p2 
    EXCEPT
    SELECT o1.CodProdotto as Prod1,o2.CodProdotto as Prod2 FROM ordini as o1 JOIN ordini as o2
    WHERE o1.IdSpedizione<>o2.IdSpedizione


CREATE VIEW prodotti_venduti_coppia AS
 SELECT p1.Modello as Mod1, p2.Modello as Mod2
 FROM prodotti as p1 JOIN prodotti as p2 
 RIGHT JOIN prodotti_venduti_coppia
 ON prodotti_venduti_coppia.Prod1=p1.CodProdotto 
 AND prodotti_veduti_coppia.Prod2=p2.CodProdotto

Ci sarebbe qualcosa di migliore? Inoltre qualcosa per inglobare anche la quantità acquistata per ordinare in base ai più venduti?????
Grazie mille metto sotto anche la struttura della tabella ordini le altre non servono bastano gli ID.



codice:
Tabella Ordini
CREATE TABLE `ordini` (
 `IdSpedizione` int(9) NOT NULL ,
 `CodProdotto` int(9) NOT NULL,
`Richiesti` int(2) NOT NULL ,
`totale` double NOT NULL,
 PRIMARY KEY  (`IdSpedizione`,`CodProdotto`),
KEY `CodProdotto` (`CodProdotto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;