- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- [MySql] Join un po particolare tra 3 tabelle
-
Io userei la funzione mysql_affected_rows per contare le righe di una chiamata: anche annidando due cicli la cosa mi pare molto veloce!
-
Il mio problema è che se non uso il distinct me ne restituisce migliaia perchè conta le righe dei comuni, se uso il distinct sull'id delle province mi restituisce un recordset vuoto
non avevo pensato ad utilizzare quella funzione, ma penso che il problema rimanga lo stesso di adesso che uso un count()
non lo so, sarà inesperienza o uno di quei casi limite in cui mysql ricompila la query e fa pasticci
-
Mh... Con mysql_affected_rows puoi semplicemente fare un if se uguale a 0 allora stampa il nome!
-
ah chiedo scusa pensavo fosse una funzione di mysql, masochisticamente sto utilizzando asp
non c'è un modo per filtrare i risultati solo tramite query?
-
Mh... sinceramente non saprei: stai provando a "buttare" le query direttamente in phpMyAdmin per vedere cosa ti rende?
-
Posso copiare la query che uso (con i nomi di tabella e campi un po diversi)
SELECT COUNT( DISTINCT (mappa_province.ID_provincia ) ) FROM mappa_province INNER JOIN mappa_comuni ON mappa_comuni.ID_provincia = mappa_province.ID_provincia LEFT JOIN locali ON mappa_comuni.ID_comune = locali.ID_comune WHERE locali.ID_comune IS NULL
avevo scritto male prima, questa query con il count mi da 103 (il totale delle province), senza mi da l'elenco di tutte e 103 le province
probabilmente sbaglio qualcosa alla base della query
-
mi sono accorto adesso quanto sono stordito
ho l'id della provincia riportato nella tabella del comune, basta fare una join a dueSELECT DISTINCT (mappa_comuni.ID_provincia ), locali.id_comune FROM mappa_comuni LEFT JOIN locali ON mappa_comuni.ID_comune = locali.ID_comune WHERE locali.ID_comune IS NULL
ma mi restituisce anche questo tutte le province :S
-
Scusa prova a selezionare in una query (A) i comuni che hanno dei locali e poi tramite un NOT IN () trovi i comuni che non hanno locali. Per intenderci (andando un po' alla ceca):
SELECT * from provincie p
LEFT JOIN comuni c on c.id_comune = p.id_comune and c.id_comune NOT IN (SELECT DISTINCT id_comune from locali)M.
-
Ho provato questa ma mi restituisce sempre tutte le province :S
SELECT DISTINCT(ID_provincia) FROM mappa_comuni c WHERE c.id_comune NOT IN (SELECT DISTINCT id_comune from locali)
-
Non è che hai dei comuni senza locali in tutte e 5 le provincie ?
M.
-
ah... mi sento un idiota
si, ovviamente le province che contengono comuni con locali registrati contengono anche comuni senza locali, quindi per questo me li restituisce sempre tutti
ma allora che devo fare?
-
ehmm... capire per bene cosa devi fare....
M.