View Full Version : [Sql] contare record con più tabelle
tyger123
28-12-2012, 14:18
Salve a tutti,
ho due tabelle
Tabella1
id i_idtipotabella2
1 1
2 1
3 1
4 2
5 2
6 4
7 4
tabella2
id descrizione i_idmaster
1 valore1 0
2 valore1_1 1
3 valore1_2 1
4 valore2 0
Avrei bisogno di avere da una select con il conteggio delle descrizioni. in questo caso specifico(in base alle tabelle) sarebbe:
valore1 = 5
valore2 = 2
In pratica, quando i_idmaster è 0 devo prendere per buona la descrizione "originale", se invece i_idmaster è <> 0 devo accorpare al "valore principale"
La tabella2 è una tabella ricorsiva, ma credo si capisca
spero d'esser stato chiaro.
grazie mille.
PS. uso sql server
downloader
28-12-2012, 15:46
Non ho ben chiaro cosa vuoi, spieghi bene la relazione tra le due tabelle?
i_idtipotabella2 è foreing key verso l'id di tabella2 ?
Se così... da esempio specifico tu non dovresti avere
valore1 = 5
valore2 = 2
ma
valore1 = 3
valore2 = 2
o no ??
Non mi è chiaro poi l'uso del flag, cosa è per te il valore originale e quello principale ??
Dal risultato dell'esempio sembra che tu abbia contato solo le descrizioni con il flag a 0, sbaglio?
tomminno
31-12-2012, 16:01
Salve a tutti,
ho due tabelle
Tabella1
id i_idtipotabella2
1 1
2 1
3 1
4 2
5 2
6 4
7 4
tabella2
id descrizione i_idmaster
1 valore1 0
2 valore1_1 1
3 valore1_2 1
4 valore2 0
Avrei bisogno di avere da una select con il conteggio delle descrizioni. in questo caso specifico(in base alle tabelle) sarebbe:
valore1 = 5
valore2 = 2
In pratica, quando i_idmaster è 0 devo prendere per buona la descrizione "originale", se invece i_idmaster è <> 0 devo accorpare al "valore principale"
La tabella2 è una tabella ricorsiva, ma credo si capisca
spero d'esser stato chiaro.
grazie mille.
PS. uso sql server
Se non ho capito male la tua esigenza sarebbe quella di fare un "group by like" ovvero tutti quelli che hanno una descrizione simile devono far parte dello stesso raggruppamento.
lo puoi anche fare ma devi elencare nella query tutti i possibili valori di descrizione (se questi sono statici e poco numerosi ok altrimenti è ingestibile con una query, ti conviene farla via codice).
Indicativamente dovrebbe essere così:
select count(t2.descrizione), t2.descrizione from Tabella2 t2
join Tabella1 t1 on t2.id=t1.i_idtipotabella2
group by
case
when t2.descrizione like 'valore1%' then 'valore1'
when t2.descrizione like 'valore2%' then 'valore2'
end
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.