webForumDet fria alternativet

Join

6 svar · 166 visningar · startad av Davida

DavidaMedlem sedan okt. 2000219 inlägg
#1

Jag använder en selectsats:

SELECT * FROM Tabell1, Tabell2 WHERE Tabell1.tabell2id=tabell2.id

Sedan skriver jag ut infon från mitt rs (fältet kommer från tabell2):

<%=rs("tbl2_namn")%>

Hur gör jag så att man visar blankt istället för att inte visa posterna där tabell1.tabell2id är tomt?

------------------

if user="David Altefur" then
  Response.write "Tack på förhand"
End if
VideMedlem sedan dec. 19998 577 inlägg
#2

SELECT * FROM Tabell1, Tabell2 WHERE Tabell1.tabell2id=tabell2.id OR Tabell1.tabell2id = ''

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Jag förstår inte vad du menar. Vad är tomt i detta sammanhang? Är det en outer join du vill ha, dvs att du får ut alla poster från tabell1 även om det inte finns någon matchande post i tabell2?

Vide

Jag förstår inte din fråga heller.

För varje rad i tabell1 där id = '' så kommer du att få alla rader i tabell2

------------------
essentitia preter non sans multiplicandum

DavidaMedlem sedan okt. 2000219 inlägg
#4

Ja, du har fattat precis det jag vill

------------------

if user="David Altefur" then
  Response.write "Tack på förhand"
End if
LarsGMedlem sedan dec. 200012 464 inlägg
#5
SELECT * FROM Tabell1 left outer join
Tabell2 on Tabell1.tabell2id=tabell2.id

För de rader där de inte finns några matchande poster i tabell2 så blir det null i de kolumner som kommer från tabell2.

I VB-script kan man testa om ett värde i ett recordset är null med

if isnull(rs("kolumn")) then

------------------
essentitia preter non sans multiplicandum

DavidaMedlem sedan okt. 2000219 inlägg
#6

I min SQL-sats har jag ett gäng övriga Where-joinar, kan man bara lägga till det du skrev på slutet av SQL-satsen före ORDER BY?

------------------

if user="David Altefur" then
  Response.write "Tack på förhand"
End if
LarsGMedlem sedan dec. 200012 464 inlägg
#7

Ja visst.

SELECT * FROM Tabell1 left outer join
Tabell2 on Tabell1.tabell2id=tabell2.id
where dcb in (4711,4712) 
  and qcb <> 'Quasi' 
order by tcb desc

Red: såg inte att du skrev join

Olika dbms tillåter olika konstruktioner

select * from t1,t2 left outer join t3
 on t2.id = t3.id 
where t1.id = t2.id

är korrekt enligt SQL-standard men godkänns inte av alla, i så fall får man skriva

select * from t1 inner join t2
on t1.id = t2.id left outer join t3
on t2.id = t3.id

vilket är funktionellt samma sak som ovan.
Har för mig att Access är värst i detta avseende och att den kräver att man har parenteser om ena join-delen
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 02 sep 2001]

127 ms totalt · 3 externa anrop · v20260731065814-full.b943c234
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)