|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2012
Messaggi: 26
|
[Sql] contare record con più tabelle
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 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Città: Napoli
Messaggi: 6193
|
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?
__________________
Diablo3 PF | MyPC(liquidato) - Case Corsair Obsidian 800D / PSU Enermax Galaxy 1000W / MB GA-EX58A-UD7 / CPU Intel I7 920 D0@4.1ghz / MEM Corsair Dom. GT@1680mhz / GPU R9 290X / HD 2xWD 150GB raid 0/ SO - Windows 7 Ult. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
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ì: Codice:
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 |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:59.