Avatar billede knightdear Nybegynder
27. marts 2001 - 12:28 Der er 16 kommentarer og
2 løsninger

Mysql left joins - SVÆR! :o)

Hey all :o)

Jeg har et kæmpe problem:
Jeg skal have lavet et MySQL kald der gør noget i denne retning:
Den skal hente fra tabel1 (hvis en masse) og left joine en del ting eller hente fra tabel2 (hvis en masse og tabel2.id ikke er tabel1.id.... HOW!?!?! :o)

Dette er temmeligt simplificeret, men kan det lade sig gøre, at selecte en ting, og en anden ting, uden at den første er true på en eller anden måde... glem left joins... dem har jeg prøvet at gøre det med, og det virker ikke.... :o)

Thanx in advance :o)

KnightDear
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:34 #1
Jeg tror ikke helt jeg forstår...

Det lyder ikke særligt svært? Du skal hente noget data gennem en IF, men kun hvis den ikke går igen i to tabeller?
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:39 #2
Jeg tror godt jeg kan gøre det, men jeg skal lige være helt sikker på hvad det er.
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:42 #3
from skal omskrevet til ikke SQL være således:
from (tabel1 left join tabel2 on tabel1.id = tabel2.id) and tabel2 (hvor en masse) og tabel1.id != tabel2.id

Håber det hjælper :o)
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:49 #4
Jeg tror jeg har fået kørt problemet ned til en sætning, og mine øre, virker det ikke:
Select * from tabel1 or tabel2 where bla bla
KnightDear :o)
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:49 #5
upz \"og mine\" = \"og i mine\" :o)
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:50 #6
hjalp ikke, drop rutinen og skriv hvad der skal ske...

Join tingen fungerer aldrig for mig så jeg bruger altid en masse alternativer og det vil jeg hellere hjælpe med hvis jeg kan.

Prøv at skrive hvad det skal gøre i stedet!

Hvis det er noget kode du allerede har, men som ikke virker så kan jeg måske se fejlen. - i så fald så smid det lige til mig.
Avatar billede defrost Nybegynder
27. marts 2001 - 12:51 #7
Det kan du ikke lave i mysql i ét kald.

Det du skal bruge er en full outer join, som mysql ikke understøtter. Du bliver nødt til at splitte det op i en left-join efterfulgt at en right-join. (eller en omvendt left join).
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:53 #8
Nopes... not good enough, Jeg har 200 linier kode som samler SQL\'en, og tro mig... jeg ved det hele virker, så længe jeg ikke vil have den sidste \"or tabel2\" med... Problemet er at det SKAL være i en sætning, da denne fulde sætning bruger lang tid nok i forvejen, og dataene er for besværlige at samle igen bagefter, hvis man laver 2 selects... men tak for forsøget :o)
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:54 #9
<--- mysql_query(\"SELECT * FROM tabel1 or tabel2\"); --->

??? ser det således ud?
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:55 #10
defrost > Tak for det simple svar, på et latterligt langt spørgsmål ;o)

morten_dyrekilde > Tak for forsøget :o)
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:55 #11
DAMN defrost - det kunne jeg sq have sagt!!

Nå skidt - du fattede hurtigere hvad han mente!
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:56 #12
m_d > Ja det var det jeg kom frem til, det måtte være... så det virker ikke som defrost sagde :o/
Avatar billede knightdear Nybegynder
27. marts 2001 - 12:57 #13
m_d > Hehe... det hjælper at skrive det ned... Jeg kunne egentlig have sagt mig selv det, da jeg fik lokaliseret problemet :o)
Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 12:58 #14
Fandens - da jeg endelig forstod hvad du mente og var klar til at fortælle dig at man ikke kunne - så har defrost allerede sagt det!!!!

Tigerdyr gør det samme SKIDE IRRITERENDE!!! >:-(
Avatar billede defrost Nybegynder
27. marts 2001 - 12:59 #15
knightdear>> Jeg kan desværre ikke se anden mulighed end at lave det som to kald og smide det i en tmp-tabel for derefter at trække det samlede resultat ud derfra.

I den mystiske mysql 4.1 lover de at have sub-queries klar. Om en full outer join kommer også ved jeg ikke helt.

Avatar billede morten_dyrekilde Nybegynder
27. marts 2001 - 13:01 #16
Nå, det er i orden. Den evige kamp for point på eksperten.
Avatar billede htx98i17 Professor
27. marts 2001 - 13:02 #17
især når der er så mange point på spil :-)
Avatar billede knightdear Nybegynder
27. marts 2001 - 13:04 #18
htx > Det er den eneste måde at få hurtige seriøse svar på... :o)

defrost > Det lyder fedt :o)

m_d > Ja det er sjovt ikke? :o)
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
Computerworld tilbyder specialiserede kurser i database-management

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