Waarde ophalen afhankelijk van ander record.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- SanThe -

- SanThe -

25/09/2013 18:08:26
Quote Anchor link
Ik wil graag een record ophalen uit een tabel maar dat afhankelijk is van een ander record in dezelfde tabel. Hoe doe ik dat?

SELECT iets
FROM tabel
WHERE veld1='waarde1'

maar dan mag een ander record in dezelfde tabel geen
veld2='waarde2'
hebben.
 
PHP hulp

PHP hulp

17/11/2024 12:51:29
 
Koen Hollander

Koen Hollander

25/09/2013 18:21:48
Quote Anchor link
Na wat google-en heb ik denk ik wel wat voor je gevonden:
http://dev.mysql.com/doc/refman/5.0/en/if.html
 
Erwin H

Erwin H

25/09/2013 18:26:33
Quote Anchor link
Omdat je het over twee records doet, zal je een self join moeten toepassen. Op dit moment weet ik alleen niet op welke grond je het 'andere' record selecteert, dus dat is vast nog even voor verbetering vatbaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT a.iets
FROM tabel a
LEFT JOIN tabel b ON b.id = xxx
WHERE a.veld1='waarde1'
  AND b.veld2 <> 'waarde2'

De selectie die ik dus niet weet op dit moment betreft dat wat in de ON clause van de JOIN staat.
 
- SanThe -

- SanThe -

25/09/2013 18:34:31
Quote Anchor link
Ik heb al iets gevonden:

SELECT iets
FROM tabel
WHERE veld1='waarde1'
AND (SELECT iets FROM tabel WHERE veld1='waarde2' AND veld2<>'waarde2')

Bedankt voor het meedenken.
Die if()-pagina van Koen ga ik even goed bekijken want er valt nog wel wat te verbeteren.

SanThe.
 
Erwin H

Erwin H

25/09/2013 18:38:14
Quote Anchor link
Die if kan je niet gebruiken omdat het over meerdere records in dezelfde tabel gaat. Je hebt dus altijd een self join of een subquery nodig.

Ik vraag me alleen af wat jij nu doet of het werkt. Heb je dat getest?
 
- SanThe -

- SanThe -

25/09/2013 19:17:10
Quote Anchor link
Die query werkt maar voldoet niet aan wat ik zocht. Ik heb het nu opgelost met twee query's en dat werkt exact zoals ik wil. Het staat in een stukje code dat zeer zelden wordt gebruikt dus een query meer maakt daar niet echt uit.
 
Aad B

Aad B

25/09/2013 20:18:36
Quote Anchor link
Het kan toch het beste met 1 query+subquery. Geen data processen in php dus. Helaas wordt er hier vaak nogal spastisch gedaan over subquery's. Een subquery met een NOT EXISTS is feitelijk de aangewezen oplossing. Ik gebruik het regelmatig op zeer grote databases en met de juiste indexing gaat dit goed.
Gewijzigd op 25/09/2013 20:20:22 door Aad B
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/09/2013 21:58:30
Quote Anchor link
Jammer maar helaas.
Als we het over mysql hebben is een WHERE NOT EXISTS subquery nooit de aangewezen oplossing!!
En met zeer grote databases ga je zeker geen mysql gebruiken.
 
Aad B

Aad B

26/09/2013 15:10:31
Quote Anchor link
Ger van Steenderen op 25/09/2013 21:58:30:
Jammer maar helaas.
Als we het over mysql hebben is een WHERE NOT EXISTS subquery nooit de aangewezen oplossing!!
En met zeer grote databases ga je zeker geen mysql gebruiken.
Ik moet inderdaad bekennen dat ik weinig mysql gebruik. Ik gebruik WHERE NOT EXISTS veelvuldig, indien nodig, in Oracle(11G) Echter ook in MySQL kan een WHERE NOT EXISTS efficient werken wanneer het 'gezochte dat niet mag bestaan' een geindexeerde column is en dan bij voorkeur een unique indexed, toch? Ik ben benieuwd waarom je van mening bent dat het in MySQL echt niet kan.
Gewijzigd op 26/09/2013 15:51:17 door Aad B
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/09/2013 18:29:30
Quote Anchor link
Omdat dit in MySQL altijd een full table scan tot gevolg heeft, ongeacht of je nu een extra filter in de hoofdquery hebt staan. Het wordt zelfs in de MySQL manual zelf aangekaart.

Maar het is wel MySQL specifiek, want ook in SQL Server kan je zonder probleem (is zelfs beter) NOT EXISTS subqueries toepassen.

Daarom mag er ook wel spastisch gedaan worden over subqueries, ik vermijd ze daar waar mogelijk
 
Aad B

Aad B

26/09/2013 20:07:20
Quote Anchor link
@Ger, dank voor je toelichting. Weer wat geleerd over MySQL
 
Dendeze ikke

dendeze ikke

26/09/2013 20:38:15
Quote Anchor link
En mogen we dit stukje code dan ook zien ? -)

Toevoeging op 26/09/2013 20:38:55:

En mogen we dit stukje code dan ook zien ? -)
Oeps...time out !
Gewijzigd op 26/09/2013 20:39:50 door dendeze ikke
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.