Select con Join

Pubblicità

toni1705

Nuovo Utente
Messaggi
98
Reazioni
9
Punteggio
28
Ho un database con relativo popolamento di questo tipo e mi è chiesto di effettuare diverse query.
Premetto che mi sto esercitando
dovrei:
a) Per ogni utente, trovare il suo login, il suo nome e il numero di aste non concluse con una vendita
in cui ha partecipato
b) Trovare il nome e il CF di tutti gli utenti che hanno effettuato più di due acquisti
Ho iniziato con la B perchè sembrava più semplice .. Ma semplice non è stato poichè non riesco a legare queste tre tabelle avevo provato con
SQL:
select vendita.cf ,utente.nome from vendita
inner  join rilanciata on rilanciata.id_asta=vendita.id_asta
 inner join utente  on  utente.login=rilanciata.login
where rilanciata.prezzo_rilancio=vendita.prezzo_finale
ovviamente non riesco a capire come un utente abbia potuto effettuare due acquisti..(Da cosa lo si evince a questo punto)?
Ma non so se è giusto perchè non ho la soluzione;

347025
 

Allegati

  • DiagrammaRelazionale_DBAsta.webp
    DiagrammaRelazionale_DBAsta.webp
    35.4 KB · Visualizzazioni: 93
Ultima modifica:
Oggettivamente trovo questo 'schema' un po' arzigogolato e poco pratico. E' un DB reale o per esercizi/studio?

A senso io mi sentirei di dire che se una login ha almeno 2 record in 'Vendita' allora per il B ci siamo.
Per cui (sempre se le mie supposizioni sono corrette)

SQL:
SELECT
    u.nome, v.cf
FROM
   utente u
      INNER JOIN
   rilanciata r ON u.login = r.login
      INNER JOIN
   vendita v ON r.ID_asta= v.ID_asta
GROUP BY
   u.login
HAVING
   count(u.login) > 1
 
Oggettivamente trovo questo 'schema' un po' arzigogolato e poco pratico. E' un DB reale o per esercizi/studio?

A senso io mi sentirei di dire che se una login ha almeno 2 record in 'Vendita' allora per il B ci siamo.
Per cui (sempre se le mie supposizioni sono corrette)

SQL:
SELECT
    u.nome, v.cf
FROM
   utente u
      INNER JOIN
   rilanciata r ON u.login = r.login
      INNER JOIN
   vendita v ON r.ID_asta= v.ID_asta
GROUP BY
   u.login
HAVING
   count(u.login) > 1
u.login deve comparire nella clausola SELECT (e pure u.nome e v.cf nel GROUP BY)
 
Dipende, io ho usato la sintassi di MySQL, ma in SQL Server è necessario fare come dici tu ;)
 
Pubblicità
Pubblicità
Indietro
Top