To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
Verwijderd
1
| SELECT id FROM mytable WHERE ( Key = 'lengte' AND Value = '100' ) AND ( Key = 'kleur' AND Value = 'groen' ) |
Zoiets? Voor elke zoekwaarde plak je er een AND achter
De vraag is dus is INTERSECT de juiste oplossing voor het probleem in deze situatie
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
In setterminologie is het gewoon in een intersect. Maar je kan dat uiteraard ook bereiken met joins of in() clauses.
{signature}
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
The ships hung in the sky in much the same way that bricks don’t.
Is uiteraard een van de mogelijkheden, geen idee wat voor postgres het efficients is. Met mysql wint de join aanpak het 99 vd 100 keer van een dependant IN() subquery.
{signature}
The ships hung in the sky in much the same way that bricks don’t.
Ok bedankt voor de input allemaal. Ik blijf gebruik maken van INTERSECT. Als je nl. vele JOINS moet genereren op een onbekend aantal keys dan wordt de query onoverzichtelijk en wordt de code ook onoverzichtelijk. Qua performance maakt het, voor zover mij nu bekend is, niet zoveel uit en niemand heeft aangegeven dat het beter is om INTERSECT in deze situatie niet te gebruiken. Tevens maakt het de code en query overzichtelijkVoutloos schreef op vrijdag 05 september 2008 @ 09:49:
Je joint gewoon tegen dezelfde tabel op basis van Id. Bij de 1e tabelalias check je de 1e voorwaarde, en bij de 2e de 2e.
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
Mijn hints zijn wellicht teveel geinpireerd door mysql welke qua subquery performance compleet zuigt.
{signature}
1
2
3
4
| select id from mytable where (key,value) in (('lengte','100'),('kleur','groen')) group by id having count(*)=2; |
Ondersteund postgreSQL dit ook? (En hoe is de snelheid?)
(En verder is deze databasestructuur niet echt geweldig, dit ziet eruit als het heruitvinden van een tabel)
[ Voor 17% gewijzigd door pedorus op 05-09-2008 10:30 ]
Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten
1
| SELECT * FROM x WHERE id = (SELECT id FROM Y) |
qua snelheid lijkt IN op het eerste gezicht sneller dan INTERSECT. Dan maak ik geen gebruik van JOINS en case insentivity bij beide queries. Ik gebruik pgAdmin 1.8.4 en ik ben niet zo bekend met analyseren van queries hiermee. (eerste maal dat ik iets met postgreSQL doe)
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles