n° 185
Maggio/Giugno 2013
Maggio 22, 2013, 04:54:02 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [SQLite] Primi passi  (Letto 1020 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Kwb
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 56



Mostra profilo
« inserita:: Maggio 29, 2012, 06:18:40 pm »

Ho iniziato da poco a vedere il linguaggio SQL, utilizzando SQLite.
Ho quindi preso a fare esercizi per imparare, e ora ho un problema che non riesco a risolvere.
Ho due tabelle: team(TID,Name,City) e schedule(Host,Guest,Hostscore,Guestscore);
La prima tabella è popolata con il codice della squadra ( chiave primaria ), il nome della squadra e la città d'appartenenza. La seconda tabella è popolata coi codici delle squdre ( Host e guest ), e il risultato.
Ora devo fare una query in grado di trovare il nome delle squadre che hanno giocato almeno 1 derby ( ovvero squadre provenienti dalla stessa città ) e il numero di derby giocati.
Quello che non riesco a fare è cosa fare per vedere se due squadre hanno la stessa città.
Avevo pensato all'utilizzo di un'intersezione, tuttavia le due tabelle hanno numero di record diversi, quindi non posso usarla.
Registrato
ctraversa
Jr. Member
**

Karma: +14/-7
Scollegato Scollegato

Messaggi: 155


Mostra profilo
« Risposta #1 inserita:: Maggio 29, 2012, 07:11:37 pm »

sicuramente devi mettere in join schedule.Host con team.TID per sapere la Città dell'Host. Poi devi mettere in join schedule.Guest con team.TID per sapere la città del Guest e quindi metti la condizione di where per la quale chiedi di vedere solo quelli con ugual città. Impostata questa query la conta la fai con un count ed un group by. Provo a buttarti giù un esempio:

Codice:
SELECT schedule.Host, teamH.City,
schedule.Guest, teamG.City
FROM schedule
LEFT JOIN team AS teamH on
schedule.Host = teamH.TID
LEFT JOIN team AS teamG on
schedule.Host = teamG .TID
WHERE teamH.City = teamG.City
ORDER BY schedule.Host, schedule.Guest

Questo, a meno di sviste, è l'elenco di tutti i derby ossia delle squadre che hanno giocato almeno 1 derby. L'ordinamento ti permette di fare un conteggio manuale immediato dei derby per squadra. Per ottenere il numero per squadra sforzati se no che impari?  Ghigno
Se non ci riesci me lo dici.
Registrato
Kwb
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 56



Mostra profilo
« Risposta #2 inserita:: Maggio 29, 2012, 09:51:39 pm »

Grazie funziona! C'era solo un piccolo errore nella tua query, terz'ultima riga è: schedule.guest = teamG.tid
Per il count ho fatto così:
Codice:
select count(*) as Derby, Host, Guest
from (select match.host as HostCode, teamH.name as Host, teamH.city, match.Guest as GuestCode, teamG.name as Guest, teamG.City
from match
left join team as teamH
on match.host = teamH.tid
left join team as teamG
on match.guest = teamG.tid
where teamH.city = teamG.city
order by match.host, match.guest);

Vabbè poi la tabella si chiama match e non schedule, cmq uguale  Occhiolino
Registrato
ctraversa
Jr. Member
**

Karma: +14/-7
Scollegato Scollegato

Messaggi: 155


Mostra profilo
« Risposta #3 inserita:: Maggio 30, 2012, 08:56:20 am »

L'importante è aver trasmesso il concetto.  Occhiolino
Buon lavoro.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page