conteggio record

Ciao Gianni come posso evitare di proiettare le tuple che non hanno associazioni con una tabella ?

Supponendo di avere due relazioni : località(id, nome) e proprietà(id, nome, località)

come proietto solo le località che hanno delle referenze (quindi l'id della località non compare nella seconda relazione) dalla relazione proprietà?

per relazione intendo tabella.

edit: la query ora è questa:

select l.id, l.name from pmr_locations l join pmr_properties p on l.id=p.location group by(l.id) having(count(*) > 0) order by(l.name)

dovrebbe andare bene?

testata e funzionante, ma vorrei un tuo parere comunque.

 :bye:

inviato 8 anni fa
Andrea Turso
Andrea Turso
86
modificato 8 anni fa
X 0 X

forse non ho ben capito ma per trovare tutte le tuple di una tabella che hanno una o più tuble collegate in un'altra tabella basta il semplice join

se invece vuoi le tuple che non hanno tuple collegate allora serve un left join con un where nome_campo_collegato is null

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

praticamente dovevo estrarre solo i record (nome, id, conteggio referenze) che avevano riferimenti nei record di un'altra tabella.

La query sembra funzionare, restituisce solo i nomi e gli id delle località che contengono almeno un annuncio.

Bah non ho tool per fare un grafico ER o UML...peccato. :P

proprieta.location -> localita.id
select l.id, l.name, count(*) conteggio from locations l join proprieta p on p.location=l.id

è bastato usare un join per estrarre tutti gli annunci con un riferimento alla località, ma a me serviva contarli e usare il conteggio per limitare la proiezione delle località senza riferimenti (avendo il plus del conteggio da poter mostrare tra parentesi nella vista)

group by(localita.id)

qui raccolgo i risultati in base al loro id

having(conteggio > 0)

limito i risultati senza riferimenti dall'essere proiettati.

Questo è il ragionamento che ho fatto ad arrivare a quella query (chiedo venia per eventuali baggianate, ho sonno  :P ).

ps : Gianni conosci qualche bel tool per grafici uml e ER?

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

having(conteggio > 0) non serve, perché la join semplice (a differenza della left join) considera solo i record della tabella di partenza legati a record dell'altra tabella.

Per i diagrammi a lavoro usiamo rational rose.

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Si hai perfettamente ragione, ci stavo pensando sù stamani a scuola.

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda