27. marts 2001 - 12:28Der 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)
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
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).
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)
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.
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)
Synes godt om
Ny brugerNybegynder
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.