Avatar billede Slettet bruger
25. marts 2002 - 13:18 Der er 40 kommentarer og
1 løsning

Hente data fra to tabeller

Hej

Det er sikkert meget nemt, men jeg ved ikke lige hvordan man gør...

Jeg skal hente data fra to MySQL tabeller hvor een betingelse er opfyldt.
Hvordan henter jeg fra begge på samme tid?
Har prøvet at adskille dem med komma i nedenstående SQL, men det virker ikke...
SQLstmt = "SELECT * FROM tbl_1,tbl_2 WHERE skrevet af = '" & Session("id") & "'"

Avatar billede nute Nybegynder
25. marts 2002 - 13:21 #1
Høyst sannsynlig så er det fordi din kolonne 'skrevet af' skaper problemer. Kall din kolonne 'skrevet_af' eller 'skrevetAf' og *ikke* bruk spaces i kolonne navn
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:23 #2
Du skal bruge inner join.
Select * from tabel1 INNER JOIN "felt i første tabel" ON "felt i anden table"
Avatar billede Slettet bruger
25. marts 2002 - 13:24 #3
nute > Øhhh havde ikke lige set det (havde ændret i den oprindelige SQL fordi jeg ikke havde lyst til at røbe navnene på mine tabeller og felter) men den står altså ikke med mellemrum i den jeg bruger ;o)
Avatar billede Slettet bruger
25. marts 2002 - 13:27 #4
ras > Gider du at indsætte det i min existerende SQL (har aldrig rodet med andet end INSERT, UPDATE, DELETE..)
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:33 #5
Æh det er lidt svært uden at vide hvordan dine tabeller er bygget op. Er det to ens tabeller, altså med ens kolonner, du vil have sammenføjet til en lang, eller er det to forskellige tabeller?
Og det bliver helt umuligt at gøre hvis jeg ikke kender navnene på dine tabeller, kollonner, osv.
Avatar billede nute Nybegynder
25. marts 2002 - 13:35 #6
ras2000 > man behøver ikke å skrive INNER JOIN. måten som allerede er angitt, er en implisitt måte å skrive INNER JOIN på, så det er ikke noe galt i det.

ezolu >> hvilken feil får du ?
Avatar billede Slettet bruger
25. marts 2002 - 13:36 #7
ras > Strukturen i de to tabeller er ens. Jeg vil have hentet alle rs fra begge tabeller hvor Session("id") er den aktuelle
Avatar billede Slettet bruger
25. marts 2002 - 13:38 #8
nute > Column: 'skrevetaf' in where clause is ambiguous
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:40 #9
Så prøv where skrevetaf.tabel1 = ... or skrevetaf.tabel2 = det samme.
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:41 #10
.. jeg går udfra at det nute skrev er rigtigt, han er klogere end mig.
Avatar billede Slettet bruger
25. marts 2002 - 13:44 #11
ras > Virker ikke...
Avatar billede nute Nybegynder
25. marts 2002 - 13:46 #12
ras2000 >> det skal være 'tabel1.skrevetaf' og ikke 'skrevetaf.tabel1'

ezolu >> det lyder som om din database struktur er rimelig dårlig. Det å lage to identiske tabeller er ikke særlig smart :|
Avatar billede Slettet bruger
25. marts 2002 - 13:48 #13
nute > I mit tilfælde er det ikke dumt :o) Jeg er sikker! Men hvordan får jeg SQL'en til at vælge * fra begge tabeller hvor skrevetaf = session("id")
Avatar billede nute Nybegynder
25. marts 2002 - 13:49 #14
ras2000 >> jeg er nok ikke klokere...men jeg har nok endel mer erfaring enn deg ;-)
Avatar billede nute Nybegynder
25. marts 2002 - 13:52 #15
ezolu >> selv om man tror at ens behov er unikt og at man ikke kan løse det på en annen måte, så er det sjelden korrekt. Jeg vil nok påstå at det er en dårlig løsning helt til du klarer å overbevise meg om det...(men det er jo ikke det som er poenget med denne thread).

prøv:

SQLstmt = "SELECT * FROM tbl_1,tbl_2 ON tbl_1.skrevetaf = tbl_2.skrevetaf WHERE tbl_1.skrevetaf = '" & Session("id") & "'"
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:53 #16
Så skal du vist bruge noget der hedder union select.
select feltnavn1, feltnavn2 from tabel1 where betingelse union select feltnavn1, feltnavn2 from tabel2 where betingelse.
Avatar billede ras2000 Nybegynder
25. marts 2002 - 13:54 #17
og nute, erfaring = kloghed.
Avatar billede Slettet bruger
25. marts 2002 - 13:57 #18
nute > Fejl i SQL syntax near ON...
Avatar billede nute Nybegynder
25. marts 2002 - 14:02 #19
hov...unnskyld...prøv denne:

SQLstmt = "SELECT *
FROM tbl_1,  tbl_2  WHERE  tbl_1.skrevetaf = tbl_2.skrevetaf AND tbl_1.skrevetaf = '" & Session("id") & "'"
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:05 #20
Virkede min ikke?
Avatar billede Slettet bruger
25. marts 2002 - 14:05 #21
nute > Det virker ikke - den henter kun fra tbl_1 hvor betingelsen er opfyldt..
Avatar billede Slettet bruger
25. marts 2002 - 14:05 #22
ras > Nej desværre ikke :-)
Avatar billede nute Nybegynder
25. marts 2002 - 14:07 #23
tja...jeg har laget en database med tabellene tbl_1 og tbl_2 som inneholder kolonnene ID og skrevetaf. Når jeg fyrer av overstående SQL, så får jeg data fra begge tabeller...det fungerer iallefall for meg...
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:07 #24
Er navnene på dine kollonner ens?
Avatar billede Slettet bruger
25. marts 2002 - 14:09 #25
nute > skrevetaf indeholder en en ID ala 'dvQWnvAc792X693' som er den pågældende brugers id og session("id") er naturligvis denne, hvis det er til nogen hjælp?
Avatar billede Slettet bruger
25. marts 2002 - 14:10 #26
ras > Jep
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:10 #27
Hvad giver den af fejl? Det skulle altså virke.
Avatar billede Slettet bruger
25. marts 2002 - 14:18 #28
ras > Jeg har ikke skrevet den helt som du gjorde. Jeg valgte * i stedet for feltnavn1,feltnavn2 osv... Men det burde vel ikke betyde noget?
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:20 #29
Hvad siger den af fejl?
Avatar billede Slettet bruger
25. marts 2002 - 14:23 #30
You have an error in your SQL syntax near 'union select * from tbl_2 where skrevetaf = 'dvQWnvAc792X693'' at line 1
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:24 #31
Jeg har lige lavet denne her, den virker helt fint.
SELECT * FROM her WHERE id > 2 UNION SELECT * FROM der WHERE id > 3;
Avatar billede Slettet bruger
25. marts 2002 - 14:27 #32
ras > Hvad er det lige det har med sagen at gøre... Jeg skal ikke bruge noget med <>...
Avatar billede Slettet bruger
25. marts 2002 - 14:29 #33
Sådan ser den ud hos mig : SQLstmt = "select * from tbl_1 where skrevetaf = '" & Session("id") & "' union select * from tbl_2 where skrevetaf = '" & Session("id") & "'"
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:30 #34
Nej, det var bare for at vise at man godt kunne føje to tabeller sammen på den måde jeg havde skrevet. Om betingelsen er =, > eller < må være ligemeget. Hvis du nu kun kigger på den ene tabel, virker din betingelse så? Og virker den også hvis du kigger på den anden tabel alene? Det ville jeg prøve at kigge på, hvis jeg var dig. Jeg tror ikke dit problem ligger i at føje tabellerne sammen.
Avatar billede Slettet bruger
25. marts 2002 - 14:31 #35
ras > De virker fint hver for sig :o)
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:38 #36
Så gir jeg op. Det skulle virke. Hvis der ikke er fejl i måden du har skrevet din betingelse, og du er helt sikker på at begge tabeller har det samme antal kollonner, med samme datatyper, i samme rækkefølge, og det stadig ikke virker, så kan jeg altså ikke gennemskue hvad der skulle være galt.
Avatar billede Slettet bruger
25. marts 2002 - 14:38 #37
ras > Mon ikke problemet ligger ved '" & Session("id") & "' union select?
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:47 #38
Avatar billede ras2000 Nybegynder
25. marts 2002 - 14:50 #39
Det skulle ikke give problemer. Men prøv at få siden til at skrive din sql sætning ud, så kan du jo se om den ser ud som du havde tænkt dig det. Altså i stedet for at udføre sætningen, så response.write sqlstm. Så prøv at klistre den herind, så vi kan kigge på den sammen.
Avatar billede Slettet bruger
25. marts 2002 - 17:39 #40
Det virker nu.. Jeg besluttede mig for at lytte til Nutes kloge ord.. Der er jo ingen grund til at ha' to identiske tabeller :o) Så nu er problemet løst...
Hvis Nute svarer, så får han points.
Tak for din indsats RAS :-)
Avatar billede nute Nybegynder
26. marts 2002 - 09:20 #41
klokt ;-)

svar...
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