webForumDet fria alternativet

SQL help

2 svar · 289 visningar · startad av Lotus

LotusMedlem sedan jan. 200116 inlägg
#1

Hej,

Jag har två frågor som hämtar data från sql tabellen
q1(artnr, lagerställe,DatumTrans, Transtyp)
1,0,20050101,110
1,1,20050101,110
3,0,20050101,110
3,1,20050101,110

i q1 transtyp är alltid 110
och q2 (artnr, lagerställe,DatumTrans, Transtyp)
1,0,20050101,270
1,1,20050101,270
2,0,20050101,270
3,4,20050101,270
3,0,20050101,270
i q2 fråga transtyp är alltid 270

Hur sql sats eller MS Acces kod ser ut för att visa alla poster från q1 + bara de poster som finns inte i q1 från q2.
Transtyp 110 har högre prioritet än 270 på alla lagerställe. Poster från q2 hämtas bara om det finns inte post för resp art och lagerställe i q1.
Låt oss säga att det finns en post för art1 och på lagerställe1 i q1 då hämtar jag ingeting för art1 från q2, men om det saknas art1 på resp lagerställe i q1 då hämtar jag posten för denna art och lagerställe från q2.
(flera artiklar och flera lagerställe)
Önskat resultat:
1,0,20050101,110
1,1,20050101,110
3,0,20050101,110
3,1,20050101,110
2,0,20050101,270
3,4,20050101,270

Tacksam för svar

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select artnr, lagerställe,DatumTrans, Transtyp
from lagertabell l
where transtyp = 110
or (transtyp = 270
and not exists
  (select * 
      from lagertabell
     where artnr = l.artnr 
         and transtyp = 110))
emissionMedlem sedan dec. 19996 721 inlägg
#3

Kanske med en liten UNION... :)

SELECT artnr, lagerställe,DatumTrans, Transtyp FROM q1
UNION
SELECT artnr, lagerställe,DatumTrans, Transtyp FROM q2 WHERE NOT EXISTS (SELECT 1 FROM q1 where q1.artnr=q2.artnr and q1.lagerställe=q2.lagerställe)
132 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)