Ciao a tutti!!!
Vorrei chiedervi aiuto per la risoluzione di alcune query. Le ho già scritte di mio, ma in realtà, anche se funzionano, sembrano parecchio lunghe e confusionarie e magari c'è un modo più semplice per scriverle che a me sfugge.
Dato che sono 10 query, vi scrivo solo quelle su cui ho più dubbi
Il nostro database è così formato
Transazione(CodiceT , Offerta, Data, Centro di raccolta)
Offerta( CodiceO , Venditore)
Gruppo di acquisto([I] Acquirente, Transazione[/U] )
Composizione( Offerta, Bene )
Afferenza( Bene, Categoria )
Feedback( Acquirente, Transazione , Voto numerico, Giudizio testuale)
Acquirente(CodiceA, Città fatturazione)
Le query ci chiedono di trovare
1."Tutti gli acquirenti che hanno effettuato transazioni di beni appartenenti alla stessa categoria e che hanno espresso valutazioni negative sul venditore (voto < 3)"
2. Tutti i venditori che hanno ricevuto valutazioni negative dagli stessi acquirenti.
3. Tutti i venditori che hanno ricevuto valutazioni positive dagli acquirenti che vivono nella stessa città.
Query1
Query2codice:CREATE VIEW `Categoria beni transazioni` AS SELECT T1.`Codice transazione` AS Transazione, A1.Bene, A1.Categoria FROM Transazione T1 JOIN Offerta O1 ON T1.Offerta = O1.`Codice offerta` JOIN Composizione C1 ON O1.`Codice offerta` = C1.Offerta JOIN Afferenza A1 ON C1.Bene = A1.Bene; CREATE `Info voti` AS SELECT Acquirente, Venditore, Transazione, `Voto numerico` AS Voto, `Giudizio testuale` AS Giudizio FROM Feedback AS F1 JOIN Transazione AS T1 ON F1.Transazione = T1.`Codice transazione` JOIN Acquirente AS A1 ON F1.Acquirente = A1.`Codice acquirente`; CREATE VIEW `Acquirente-Categoria` AS SELECT DISTINCT IV1.Acquirente, IV1.Venditore, IV1.Voto, IV1.Transazione, CB1.Categoria FROM `Info voti` IV1 JOIN `Categoria beni transazioni` CB1 ON IV1.Transazione = CB1.Transazione WHERE Voto < 3; SELECT DISTINCT AC1.Acquirente, AC2.Acquirente FROM `Acquirente-Categoria` AC1 JOIN `Acquirente-Categoria` AC2 ON AC1.Categoria = AC2.Categoria WHERE AC1.Acquirente <> AC2.Acquirente AND AC1.Categoria = AC2.Categoria;
Query3codice:SELECT DISTINCT IV1.Acquirente, IV1.Venditore, IV1.Voto, IV2.Acquirente, IV2.Venditore, IV2.Voto FROM `Info voti` IV1 JOIN Transazione T1 ON IV1.Transazione = T1.`Codice transazione` JOIN ( `Info voti` IV2 JOIN Transazione T2 ON IV2.Transazione = T2.`Codice transazione` ) ON T1.Venditore = T2.Venditore WHERE IV1.Voto < 3 AND IV2.Voto < 3 AND IV1.Acquirente = IV2.Acquirente AND IV1.Transazione <> IV2.Transazione ;
Ringrazio in anticipo chi vorrà aiutarmicodice:SELECT Venditore, `Città fatturazione` AS `Città`, COUNT(DISTINCT Acquirente) `Voti positivi` FROM `Info voti` IV1 JOIN Acquirente A1 ON IV1.Acquirente = A1.`Codice acquirente` WHERE Voto > 3 GROUP BY `Città fatturazione` HAVING `Voti positivi` > 1 ;![]()


Rispondi quotando

