[MySQL] subquery oplossing gezocht

Pagina: 1
Acties:

  • AtHomer
  • Registratie: Februari 2001
  • Niet online
Dit is wat ik eigenlijk wil doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
//Beschikbare werknemers tonen:
//alleen mensen die nog niet zijn toegevoegd bij het huidig geselecteerde
//project weergeven

SELECT $tabelwerknemer.userID,$tabelwerknemer.voornaam,$tabelwerknemer.achternaam
FROM $tabelwerknemer
WHERE $tabelwernemer.inDienst=2 AND $tabelwerknemer.userID NOT IN
(
SELECT $tabelprojectleden.userID
FROM $tabelprojectleden
WHERE $tabelprojectleden.projectID=$pid
)


MySQL ondersteunt geen subquerys heb ik begrepen, dus ik heb een poging tot ombouw gedaan:
code:
1
2
3
4
5
6
//Resultaat is: alle werknemers die nog niet bij een project zitten:

SELECT $tabelwerknemer.userID,$tabelwerknemer.voornaam,$tabelwerknemer.achternaam
FROM $tabelwerknemer
LEFT JOIN $tabelprojectleden ON $tabelwerknemer.userID=$tabelprojectleden.userID
WHERE $tabelprojectleden.userID IS NULL


Maar ik heb nu de voorwaarde "WHERE $tabelprojectleden.projectID=$pid" niet kunnen implementeren. Is dit eigenlijk wel mogelijk zonder subquery :? Ik heb er een tijd over nagedacht en wat gezocht, maar ik kom er niet uit.

Weet u zeker dat u de gewijzigde wijzigingen wilt wijzigen?


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Je kan die voorwaarde toch gewoon in je where opnemen?

code:
1
2
3
4
5
SELECT .....
FROM ...
LEFT JOIN ....
WHERE tabelprojectleden.userid IS NULL
AND tabelprojectleden.projectid = $pid

:?

https://fgheysels.github.io/


  • AtHomer
  • Registratie: Februari 2001
  • Niet online
whoami schreef op 17 september 2003 @ 10:24:
Je kan die voorwaarde toch gewoon in je where opnemen?

code:
1
2
3
4
5
SELECT .....
FROM ...
LEFT JOIN ....
WHERE tabelprojectleden.userid IS NULL
AND tabelprojectleden.projectid = $pid

:?
code:
1
2
3
4
5
SELECT $tabelwerknemer.userID,$tabelwerknemer.voornaam,$tabelwerknemer.achternaam
FROM $tabelwerknemer
LEFT JOIN $tabelprojectleden ON $tabelwerknemer.userID=$tabelprojectleden.userID
WHERE $tabelprojectleden.userID IS NULL
AND $tabelprojectleden.projectID = $pid

Daarmee geeft ie geen enkele werknemer weer...

Weet u zeker dat u de gewijzigde wijzigingen wilt wijzigen?


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Tuurlijk, omdat je voorwaarde:
WHERE userId IS NULL natuurlijk moet voldaan worden.
Moet je die voorwaarde niet als volgt gaan aanpassen:
code:
1
WHERE (tabelprojecten.userid IS NULL or tabelprojecten.userid = tblprojectleden.userid)

https://fgheysels.github.io/


  • AtHomer
  • Registratie: Februari 2001
  • Niet online
whoami schreef op 17 September 2003 @ 10:40:
Tuurlijk, omdat je voorwaarde:
WHERE userId IS NULL natuurlijk moet voldaan worden.
Moet je die voorwaarde niet als volgt gaan aanpassen:
code:
1
WHERE (tabelprojecten.userid IS NULL or tabelprojecten.userid = tblprojectleden.userid)
Ik weet niet of ik je bericht goed heb begrepen, maar ik heb nu dit geprobeerd:
code:
1
2
3
4
5
SELECT $tabelwerknemer.userID,$tabelwerknemer.voornaam,$tabelwerknemer.achternaam
FROM $tabelwerknemer,$tabelproject
LEFT JOIN $tabelprojectleden ON $tabelwerknemer.userID=$tabelprojectleden.userID
WHERE $tabelprojectleden.userID IS NULL OR $tabelproject.projectID=$tabelprojectleden.projectID
AND $tabelwerknemer.userID=$tabelprojectleden.userID AND $tabelprojectleden.projectID = $pid


Het doet wel iets, ik krijg nu namelijk alle werknemers een paar keer dubbel terug... Bij het project waar al mensen toegevoegd zijn krijg ik naast alle werknemers die nog beschikbaar zijn ook degene die al zijn toegevoegd.

Zo langzamerhand begrijp ik er zelf ook niks meer van geloof ik 8)7

Weet u zeker dat u de gewijzigde wijzigingen wilt wijzigen?


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Misschien heb je hier wat aan:
[rml][ mysql] Subselect workaround ?[/rml]

https://fgheysels.github.io/


  • AtHomer
  • Registratie: Februari 2001
  • Niet online
Bedankt voor alle hulp, maar ik heb inmiddels een workaround gevonden met javascript gelukkig. Alle werknemers die al toegevoegd zijn worden op de pagina uit de beschikbare opties gehaald :).

Weet u zeker dat u de gewijzigde wijzigingen wilt wijzigen?


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
AtHomer schreef op 17 September 2003 @ 15:28:
[...]

Bedankt voor alle hulp, maar ik heb inmiddels een workaround gevonden met javascript gelukkig. Alle werknemers die al toegevoegd zijn worden op de pagina uit de beschikbare opties gehaald :).
Hmmm, da's niet meteen de beste oplossing. Je haalt hier teveel gegevens op, die je dan in een javascript nog eens gaat gaan weglaten: dubbel tijdverlies.

https://fgheysels.github.io/


  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

Van MySQL Manual :
Subqueries are supported in MySQL version 4.1. Maar als dat bij jouw versie dus niet werkt:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);

Can be rewritten as:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;

Exact jouw probleem :)

JayGTeam (213177)


  • AtHomer
  • Registratie: Februari 2001
  • Niet online
AaroN schreef op 17 september 2003 @ 15:47:
Van MySQL Manual :
Subqueries are supported in MySQL version 4.1. Maar als dat bij jouw versie dus niet werkt:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);

Can be rewritten as:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
WHERE table2.id IS NULL;

Exact jouw probleem :)
Ik heb het gelezen, maar ik heb dus nog een WHERE conditie in de IN collectie, die kreeg ik er niet bij in.

Weet u zeker dat u de gewijzigde wijzigingen wilt wijzigen?


  • Biet80
  • Registratie: Februari 2002
  • Laatst online: 15-03 09:06
Voor diegene die het nog interesseert

code:
1
2
3
SELECT  * FROM `werknemer` 
LEFT JOIN projectleden ON werknemer.userID=projectleden.userID AND projectleden.projectID=6  
WHERE projectleden.userID IS NULL


De werkende oplossing B)

[ Voor 1% gewijzigd door Biet80 op 17-10-2003 15:49 . Reden: normale proporties voor weergave, niet zo breed op het scherm ]

Water is pas echt lekker als het bij de brouwerij is geweest...

Pagina: 1