27. april 2006 - 17:22Der er
4 kommentarer og 1 løsning
Stor SELECT med WHERE til JOIN
Hej
Jeg har flg. select-stmt: SELECT idtbl.id, pnr, tnr, po, navn, landekode, saelger, salgsenhed, personkode, fakturadato, silo.antal, silotyper.type, silotyper.model, silo.bestilt, silo.ordrebek, afskibning, silo.aflevering_salg, container_dato, omroerer.type, blaeser.antal, blaeser.model, blaeser.ny,sugende, toemmeudstyr.stoerrelse, traekstation.diameter, haeldning, motorantal, motorstr, oliefyrtyper.model, mobilsnegltyper.model, transportanlaeg.maerke, elstyring.leverandoer , fundament.ansvarlig, bygmoede, udl_liste, silostroem, projstart, hold, fund_godkendt , afleveret, silo_godkendt, aflev_forret, maintbl.bemaerk, slutafregning, personkodeslut, oprettelsesdato, lille_byggemaal, ordrebek_kunde, rate1betalt, mangler_stumper, kunde_komplet, blaeser.bestilt, oliefyr.leveret, mobilsnegl.leveret, mobilsnegl.samlet, mobilsnegl.bestilt, transportanlaeg.leveret, transportanlaeg.bestilt, elstyring.leveret, elstyring.best_dato, fundament.faerdig, maintbl.bygmoede_afholdt, maintbl.paabegyndt, fundament.klar_mont, okonomi.betalt FROM idtbl, maintbl, kundedata, okonomi, silo, silotyper, omroerer, blaeser, toemmeudstyr,traekstation, oliefyr, oliefyrtyper, mobilsnegl, mobilsnegltyper, elstyring, fundament, transportanlaeg WHERE maintbl.id = kundedata.id AND idtbl.id = maintbl.id AND idtbl.id = okonomi.id AND idtbl.id = silo.id AND silo.mid = silotyper.mid AND idtbl.id = omroerer.id AND idtbl.id = blaeser.id AND idtbl.id = toemmeudstyr.id AND idtbl.id = traekstation.id AND oliefyr.id = idtbl.id AND oliefyr.mid = oliefyrtyper.mid AND mobilsnegl.id = idtbl.id AND mobilsnegl.mid = mobilsnegltyper.mid AND idtbl.id = elstyring.id AND idtbl.id = fundament.id AND idtbl.id = transportanlaeg.id ORDER BY idtbl.id
Er der én, som kan give mig det med så mange JOIN, som muligt, så det virker... Nu har jeg kæmpet med det noget tid, og render hele tiden i en eller anden fejl, afhængig af, hvordan jeg får sat det sammen. Det haster lidt...
Du kan prøve sådan her, jeg er lidt i tvivl om hvilken er "hoved" tabellen:
FROM idtbl LEFT JOIN (maintbl, kundedata, okonomi, silo, silotyper, omroerer, blaeser, toemmeudstyr,traekstation, oliefyr, oliefyrtyper, mobilsnegl, mobilsnegltyper, elstyring, fundament, transportanlaeg) ON (maintbl.id = kundedata.id AND idtbl.id = maintbl.id AND idtbl.id = okonomi.id AND idtbl.id = silo.id AND silo.mid = silotyper.mid AND idtbl.id = omroerer.id AND idtbl.id = blaeser.id AND idtbl.id = toemmeudstyr.id AND idtbl.id = traekstation.id AND oliefyr.id = idtbl.id AND oliefyr.mid = oliefyrtyper.mid AND mobilsnegl.id = idtbl.id AND mobilsnegl.mid = mobilsnegltyper.mid AND idtbl.id = elstyring.id AND idtbl.id = fundament.id AND idtbl.id = transportanlaeg.id)
Eller sådan her med en JOIN pr linie:
FROM (((((((((((((((idtbl LEFT JOIN maintbl ON idtbl.id = maintbl.id) LEFT JOIN kundedata ON maintbl.id = kundedata.id) LEFT JOIN okonomi ON idtbl.id = okonomi.id) LEFT JOIN silo ON idtbl.id = silo.id) LEFT JOIN silotyper ON silo.mid = silotyper.mid) LEFT JOIN omroerer ON idtbl.id = omroerer.id) LEFT JOIN blaeser ON idtbl.id = blaeser.id) LEFT JOIN toemmeudstyr ON idtbl.id = toemmeudstyr.id) LEFT JOIN traekstation ON idtbl.id = traekstation.id) LEFT JOIN oliefyr ON idtbl.id = oliefyr.id) LEFT JOIN oliefyrtyper ON oliefyr.mid = oliefyrtyper.mid) LEFT JOIN mobilsnegl ON idtbl.id = mobilsnegl.id) LEFT JOIN mobilsnegltyper ON mobilsnegl.mid = mobilsnegltyper.mid) LEFT JOIN elstyring ON idtbl.id = elstyring.id) LEFT JOIN fundament ON idtbl.id = fundament.id) LEFT JOIN transportanlaeg ON idtbl.id = transportanlaeg.id
Nu har jeg skrevet LEFT JOIN, det kan være du ønsker at benytte INNER JOIN.
En ide kunne være at starte med at lave JOIN af 2 eller 3 tabller og så tilføje et par stykker af gangen indtil du har alle tabellerne med da der er mange som der skal holdes styr på :)
det har jeg også prøvet i mellemtiden.... jeg endte med en fejl.... Jeg er nu ved at lægge databasen helt om, så mySQL ikke skal lave så mange JOINS. Så regner jeg med at problemet er løst.
hov.... jeg så slet ikke, at du havde svaret også! Det må du undskylde!!! Jeg har slet ikke prøvet det af, og jeg er også rimelig sikker på, at jeg ikke gør det nu....
Hvis du vil have lidt point for dit svar alligevel, vil jeg meget gerne oprette et nyt spørgsmål!
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.