login  Naam:   Wachtwoord: 
Registreer je!
 Forum

gelimiteerd in de query

Offline Raze - 20/11/2009 15:54
Avatar van RazePHP beginner Hallo,

ik wil een query maken die alle id's en titels van fotoalbums ophaalt volgens user id. Dit weet ik hoe te doen.
Nu wil ik in dezelfde query ook één foto ophalen per fotoalbum De foto's zijn gelinkt aan het album via het album id.
Probleem is: hij haalt alle albums op, maar ook alle foto's, terwijl er dat slechts één moet zijn. Dus ik veronderstel dat ik ergens een limit 1 moet zetten, maar die mag niet gelden voor de gehele query.

Hoe kan ik dit het beste doen? Ik heb nog geen code wil eerst weten of het (theoretisch) mogelijk is.

9 antwoorden

Gesponsorde links
Offline jaronneke - 20/11/2009 16:08
Avatar van jaronneke MySQL interesse Waarom wil je dit perse in 1 query en niet gewoon in een aparte query waar je controleert of er een id ( dus bekijk ) in de get staat?
Offline ArieMedia - 20/11/2009 16:13
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
jaronneke schreef:
Waarom wil je dit perse in 1 query en niet gewoon in een aparte query waar je controleert of er een id ( dus bekijk ) in de get staat?
Omdat je dan onnodige performance verliest.
Offline Raze - 20/11/2009 16:40 (laatste wijziging 20/11/2009 16:41)
Avatar van Raze PHP beginner
ArieMedia schreef:
[..quote..]Omdat je dan onnodige performance verliest.

inderdaad

Ik had er ook al aan gedacht om dit in een aparte query te doen, maar als iemand weet hoe het in één query moet doe ik het liever in één query.
Offline ArieMedia - 20/11/2009 16:43
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Raze schreef:
[..quote..]
inderdaad

Ik had er ook al aan gedacht om dit in een aparte query te doen, maar als iemand weet hoe het in één query moet doe ik het liever in één query.
Maar ik denk dat dit mogelijk is via subquery, waar ik spijtig genoeg, geen verstand van heb..
Offline Richard - 20/11/2009 16:43
Avatar van Richard Crew algemeen En waarom doe je het in een enkele query? Wie zegt dat je daardoor niet meer performance verliest dan het op te splitsen?

Minder queries !== Betere performance, verre van.
Offline ArieMedia - 20/11/2009 16:46
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Richard schreef:
En waarom doe je het in een enkele query? Wie zegt dat je daardoor niet meer performance verliest dan het op te splitsen?

Minder queries !== Betere performance, verre van.

!==

Bedoel je nu.. eigenlijk niet?

En kan je toelichten hoe of wat bijvoorbeeld sneller is ten opzichte van (dus een aantal "cases" aangeven )? Ben hier namelijk aardig benieuwd naar  (of is er een goede uitleg van ergens op het weg  )
Offline Richard - 20/11/2009 16:52
Avatar van Richard Crew algemeen Nouja, zie het zo: voor iedere Node die jij in de query toevoegt (hetzij een veld, hetzij in feite alles wat je kunt bedenken) wordt het plannen van een query moeilijker. Al helemaal voor MySQL, die een redelijk achterhaald en zwak algoritme ervoor gebruikt.

Dus, als je eerst de aparte query schrijft, kun je die proberen in te passen in je originele query. Dat is zo simpel als copy paste, want MySQL ondersteunt ook gewoon subquery-joins. Maar dat is een extra Node in je query plan, en al die nodes kunnen op (in principe) willekeurige manier aan elkaar gelinkt worden. Oftewel, hoe meer nodes, hoe meer mogelijkheden, hoe langzamer het is.

Maar, als je het apart houdt, heb je twee aparte (en veel simpelere) query plans, wat het geheel weer sneller kan maken.


Nooit vergeten, er steekt veel meer achter een database dan wat hij opslaat. Ook MySQL, hoe erg ik het ook haat, is erg complex en interessant qua hoe ze werken. Voor de lol zou je het eens moeten doen, de source code doorkijken. Die van PostgreSQL is overigens veel interessanter (:

Je kunt er veel van leren, omdat ze vaak technieken/tactieken toepassen waar je niet snel op zou komen maar die uiterst toepasbaar zijn op "normaal" programmeerwerk. :]
Offline Raze - 20/11/2009 17:06
Avatar van Raze PHP beginner dus wat vind jij richard? gewoon 2 queries? want van subqueries heb ik ook weinig/geen kaas gegeten 
Offline Richard - 20/11/2009 17:10
Avatar van Richard Crew algemeen Subqueries zijn ook gewoon queries, maar dan binnen een query (:

Maar ik zou gewoon twee aparte doen, het is echt geen verschil van leven op dood.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.17s