webForumDet fria alternativet

Problem med SQL Union

22 svar · 325 visningar · startad av Pace

PaceMedlem sedan juni 20019 024 inlägg
#1
"SELECT t_status FROM topics WHERE topic_id=81 UNION SELECT f_name FROM forum WHERE forum_id=22"

Hur ska man göra för att få detta att funka? (tabellerna har ingen relationer här)

------------------
Peter D

KoplikMedlem sedan juli 20011 129 inlägg
#2

Det enda jag kommer på är att det borde vara samma datatyp på kolumnen i recordset:et du drar ihop...

Om det är det...
då vet jag inte... :q

------------------
Jag har en vit hund, eller är det en isbjörn?

PaceMedlem sedan juni 20019 024 inlägg
#3

Nej, men det måste de väl inte vara väl?

t_status = yes/no
topic_id = num
f_name = text
forum_id= = num

------------------
Peter D

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Jo, det skall vara samma antal kolumner i select-listorna och det skall vara jämförbara typer dvs t_status och f_name.

I och för sig så brukar inte Jet vara så noga med sådant. vad är problemet? Får du något felmeddelande eller vad?

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

KoplikMedlem sedan juli 20011 129 inlägg
#5

Hmmm...
Du har rätt...
Jag gjorde en test för säkerhetsskull...
Men det fungerade...

Det finns ingen anledning till att det inte ska fungera...
Får du något felmeddelande?

------------------
Jag har en vit hund, eller är det en isbjörn?

PaceMedlem sedan juni 20019 024 inlägg
#6

"Den" kan inte hitta recordsetet (f_name):

Item cannot be found in the collection corresponding to the requested name or ordinal.

[r] Det enda jag vill göra är att ta ut två recordset ur två tabeller... de har inget med varandra att göra.

------------------
Peter D

[Redigerat av Pace den 03 aug 2001]

KoplikMedlem sedan juli 20011 129 inlägg
#7

Du kommer att få 2 rader med en kolumn som kommer att heta t_status.
Första raden kommer att innehålla t_status och andra raden f_namn.
Om det är korrekt alltså...
tror jag :l

Hmmm...
Mysko...
Kolla stavfel, om dom finns.
Ifall dom av någon konstig anledning skulle vara reserverad ord så kan du använda hakparanteser runt...
Typ såhär:

SELECT [t_status] FROM topics WHERE topic_id=81 UNION SELECT [f_name] FROM forum WHERE forum_id=22

Kolla också så att ID:na är rätt...

Lycka till :)

------------------
Jag har en vit hund, eller är det en isbjörn?

[Redigerat av Koplik den 03 aug 2001]

PaceMedlem sedan juni 20019 024 inlägg
#8

Nope de är inga reservera ord. Och ID:na hämar jag från en querystring, så 81 & 22 är bara exmpel här. Så det är inge fel är heller.

------------------
Peter D

KoplikMedlem sedan juli 20011 129 inlägg
#9

Ja, jag kan få krupp snart om du inte löser det där :D

Jag har inte den blekaste aning om vad felet kan vara...
Mitt test med ett strängvärde och ett booleanskt värde fungerade klockrent...

Så det är bara att felsöka kära Pace! :l
It's a dirty job, but someone have to do it. :e

------------------
Jag har en vit hund, eller är det en isbjörn?

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Fältnamnen i recordset blir dom som finns i den första select-satsen, så ditt fält kommer att heta t_status, även om det innehåller värden från f_name i tabellen forum.

Om du vill kunna skilja på vilka värden som kommer från vilken tabell så kan du skriva

"SELECT t_status,1 as typ FROM topics WHERE topic_id=81 UNION SELECT f_name, 2 FROM forum WHERE forum_id=22"

och sedan kan du i din vbs skriva


if cint(rs("typ")) = 1 then
'hantera status
else
'hantera f_name
end if

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

PaceMedlem sedan juni 20019 024 inlägg
#11

Nu blir det ju fel...

Jag tar ut tre värden Union, men recordseten skiftar värden beroende på om t_status är sant/falskt...

Jag vill alltså inte kolla vad det är för värde med "If", utan jag vill på något sätt få ut just tre variabler direkt. Går det på ett smidigt sätt?

------------------
Peter D

@ndersMedlem sedan juni 200032 969 inlägg
#12

det jag kan komma att tänka på, som jag inte vet om det fungerar i access, är att göra en liten subquery:

"SELECT t_status, (SELECT f_name FROM forum WHERE forum_id=22) as f_name FROM topics WHERE topic_id=81"

torde fungera i min älskade sql server, och du får göra access-testet. ;)

funkar det som jag vill så ska du få ett recordset med två fält (som inte har något med varandra att göra, då), t_status och f_name.

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

PaceMedlem sedan juni 20019 024 inlägg
#13

Fungerar utmärkt i access osså & lite lättare att arbeta med! Tackar!

------------------
Peter D

JanspeedMedlem sedan jan. 2001510 inlägg
#14

Vad är Union och hur fungerar den?

TobbsterMedlem sedan mars 2001309 inlägg
#15

UNION Lägger ihop två tabeller till en ny tabell !!!

------------------
Är man medlem på WF så behöver man inga vänner !

emissionMedlem sedan dec. 19996 721 inlägg
#16

Nja.... :)

UNION sammanfogar resultaten från två SELECT-satser (sökningar)

TobbsterMedlem sedan mars 2001309 inlägg
#17

UNION sammanfogar resultaten från två SELECT-satser (sökningar)

Okej Emission bara för att det är du så kan jag väl hålla med ......
Men är inte det mer vad man använder det till... :)
Vi menar ju samma sak...
För resultatet man får ut är ju unikt får två tabeller sammanslaget.....

------------------
Är man medlem på WF så behöver man inga vänner !

[Redigerat av Tobbster den 06 aug 2001]

emissionMedlem sedan dec. 19996 721 inlägg
#18

För resultatet man får ut är ju unikt får två tabeller sammanslaget.....

Nja, det behöver faktiskt inte vara två tabeller. Man kan lika gärna göra en UNION i en tabell. Det är resultaten som förenas, inte tabellerna. :)

TobbsterMedlem sedan mars 2001309 inlägg
#19

Okej där lärde man sig något nytt.....Men så brukar det vara när du skriver något....Tack för den lektionen

------------------
Är man medlem på WF så behöver man inga vänner !

JanspeedMedlem sedan jan. 2001510 inlägg
#20

Union är som en Join? Är inte riktigt med på skillnaden? :)

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