Avatar billede cpccorp Juniormester
15. september 2004 - 14:39 Der er 20 kommentarer og
2 løsninger

Koble flere tabeller sammen med samme kriterie

Jeg vil gerne koble flere ens tabeller sammen, alle med samme kriterie og sortere dem efter et bestemt felt og vise dem

Det er en access database
Avatar billede jpvj Nybegynder
15. september 2004 - 14:46 #1
Hvad er spm?

Generelt: Hvis du vil forene data fra flere tabeller som du ønsker, så skal du bruge UNION.

Ex.

SELECT * from TABEL1
UNION
SELECT * from TABEL2
ORDER by FELTx
Avatar billede fennec Nybegynder
15. september 2004 - 14:46 #2
mener du UNION

select * from Tabel1
union
select * from Tabel2
order by EtFelt
Avatar billede fennec Nybegynder
15. september 2004 - 14:47 #3
et sek :(
Avatar billede cpccorp Juniormester
15. september 2004 - 14:48 #4
I am no eagle, men spørgsmålet er hvad er sql-sætningen hvis der er eks. 5 tabeller med samme kriterie felt1 = 99
Avatar billede cpccorp Juniormester
15. september 2004 - 14:51 #5
Skal der bruges paranteser ja nej osv.
Avatar billede fennec Nybegynder
15. september 2004 - 14:54 #6
Er det dette du tænker på???

select * from Tabel1 where felt1=99
union
select * from Tabel2 where felt1=99
order by EtFelt

ellers kan du vist også gøre noget i denne stil (ikke testet):

select * from
(
  select * from Tabel1
  union
  select * from Tabel2
)
where felt1 = 99
order by EtFelt
Avatar billede jpvj Nybegynder
15. september 2004 - 14:55 #7
Svjv. afh. det af SQL dialekten, men følgende burde virke:

SELECT * from TABEL1 WHERE felt1 = 99
UNION
SELECT * from TABEL2 WHERE felt1 = 99
UNION
SELECT * from TABEL3 WHERE felt1 = 99
UNION
SELECT * from TABEL4 WHERE felt1 = 99
UNION
SELECT * from TABEL5 WHERE felt1 = 99
ORDER by FELTx

Du kunne også bruge

SELECT * FROM (
SELECT * FROM TABEL1
UNION
SELECT * FROM TABEL2
UNION
SELECT * FROM TABEL3
UNION
SELECT * FROM TABEL4
UNION
SELECT * from TABEL5 )
WHERE felt1 = 99
ORDER by FELTx

Det afh. af SQL DBMS hvordan den optimerer osv. men for små mængder data, der er ikke interessant.
Avatar billede cpccorp Juniormester
15. september 2004 - 14:59 #8
Hvis I begge lægger et svar kan i dele spørgsmålene, da svarene faktisk er identiske
Avatar billede fennec Nybegynder
15. september 2004 - 15:02 #9
nej tak. jpvj var først med en løsning, som bagefter bare blev udvidet.
Avatar billede cpccorp Juniormester
15. september 2004 - 15:16 #10
Ok dit valg
Avatar billede cpccorp Juniormester
15. september 2004 - 16:41 #11
Jeg kan ikke få det til at virke her er den sidste kode jeg tjekkede:

Dim t(12)
t(1) = "P11mands"
t(2) = "P7mands"
t(3) = "P7mandsold"
t(4) = "P7mandsvet"
t(5) = "P7mandsdam"
t(7) = "P7mandsmix"
t(8) = "P5mands"
t(9) = "P5mandsold"
t(10) = "P5mandsoldsuper"
t(11) = "P5mandsmix"
t(12) = "P4mandsdam"


  Set conn = Server.CreateObject("ADODB.Connection")

ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/Tilmeldt.mdb")
conn.Open(ConnStr)


sql = "(SELECT * FROM " & t(1) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(2) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(3) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(4) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(5) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(6) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(7) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(8) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(9) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(10) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(11) & " WHERE Pulje=99) "
sql = sql & "UNION "
sql = sql & "(SELECT * FROM " & t(12) & " WHERE Pulje=99)"
Avatar billede cpccorp Juniormester
15. september 2004 - 16:42 #12
Den skriver der er en fejl i from delsætningen
Avatar billede fennec Nybegynder
16. september 2004 - 10:30 #13
prøv uden ( og ) omkring
sql = "SELECT * FROM " & t(1) & " WHERE Pulje=99 "
sql = sql & "UNION "
sql = sql & "SELECT * FROM " & t(2) & " WHERE Pulje=99 "
...
...
Avatar billede cpccorp Juniormester
16. september 2004 - 11:52 #14
det er den ligeglad med
Avatar billede fennec Nybegynder
16. september 2004 - 12:11 #15
Det ser også ud til at du har husket de mellemrum der skal være. Virker det hvis du kun bruger 2 tabeller??
Avatar billede cpccorp Juniormester
16. september 2004 - 12:13 #16
prøver det lige
Avatar billede cpccorp Juniormester
16. september 2004 - 12:37 #17
sql = "SELECT * FROM " & t(1) & " WHERE Pulje=99 "
sql = sql & "UNION "
sql = sql & "SELECT * FROM " & t(2) & " WHERE Pulje=99"
Kan den godt med
Avatar billede fennec Nybegynder
16. september 2004 - 12:56 #18
Prøv at tilføje dem en efter en indtil den fejler.
Avatar billede cpccorp Juniormester
16. september 2004 - 13:07 #19
Okay
Avatar billede cpccorp Juniormester
16. september 2004 - 13:11 #20
det er da rart at det ikke kun er mig der er blind, der er ingen t(6), men tusind tak nu virker det
Avatar billede cpccorp Juniormester
16. september 2004 - 13:12 #21
Lige en sidste ting...når der er en autonum felt i dem alle hvad bevirker dette for dette
Avatar billede fennec Nybegynder
16. september 2004 - 13:30 #22
Det kommer an på om du skal bruge id'et. Union svarer til at du laver udtrækene enkeltvis, også samler dem i en klynge bagefter. Det betyder at det er muligt at nogle ID'er gå igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester