login  Naam:   Wachtwoord: 
Registreer je!
 Forum

DISTINCT in SQL

Offline tychon - 04/12/2009 10:06
Avatar van tychonNieuw lid Hieronder probeer ik de sql-functie DISTINCT te gebruiken, maar ik krijg dan een error.

  1. SELECT
  2. k.Klant_ID,
  3. k.KlantVoornaam,
  4. k.Klant_organisatie_ID,
  5. DISTINCT ko.Klant_organisatie_ID,
  6. ko.OrganisatieNaam
  7. FROM
  8. Klanten AS k
  9. INNER JOIN Klanten_Organisaties AS ko on ko.Klant_organisatie_ID = k.Klant_organisatie_ID
  10. ORDER BY
  11. OrganisatieNaam ASC


Dit is de error:

  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT ko.Klant_organisatie_ID, ko.OrganisatieNaam FROM Klanten AS k I' at line 5


Misschien dat iemand de oplossing weet?

Mvg,

Tychon

10 antwoorden

Gesponsorde links
Offline ArieMedia - 04/12/2009 10:10 (laatste wijziging 04/12/2009 10:10)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Voor zover ik weet is het altijd SELECT DISTINCT
Offline tychon - 04/12/2009 10:16 (laatste wijziging 04/12/2009 10:17)
Avatar van tychon Nieuw lid Ik heb dan dit:

  1. SELECT
  2. DISTINCT
  3. k.Klant_organisatie_ID,
  4. k.Klant_ID,
  5. k.KlantVoornaam,
  6. ko.Klant_organisatie_ID,
  7. ko.OrganisatieNaam
  8. FROM
  9. Klanten AS k
  10. INNER JOIN Klanten_Organisaties AS ko on ko.Klant_organisatie_ID = k.Klant_organisatie_ID
  11. ORDER BY
  12. OrganisatieNaam ASC


De errors zijn dan weg, maar hij voert niet de check uit op 'Klant_organisatie_ID'. Er worden nu nog steeds dubbele ID's weergegeven in de print.
Offline ArieMedia - 04/12/2009 10:34 (laatste wijziging 04/12/2009 10:34)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
  1. SELECT
  2. k.Klant_organisatie_ID,
  3. k.Klant_ID,
  4. k.KlantVoornaam,
  5. ko.Klant_organisatie_ID,
  6. ko.OrganisatieNaam
  7. FROM Klanten AS k
  8. INNER JOIN Klanten_Organisaties AS ko ON ko.Klant_organisatie_ID = k.Klant_organisatie_ID
  9. WHERE k.klant_organisatie_id = (SELECT DISTINCT Klant_organisatie_ID FROM klanten)
  10. ORDER BY OrganisatieNaam ASC


Misschien dat dit werkt...
Offline tychon - 04/12/2009 10:43
Avatar van tychon Nieuw lid Geprobeerd, maar krijg dan deze melding: Subquery returns more than 1 row.

Zal nog even wat dingen proberen.
Alvast bedankt voor het meedenken.
Offline XenoX - 04/12/2009 14:44
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
  1. WHERE k.klant_organisatie_id IN (SELECT DISTINCT Klant_organisatie_ID FROM klanten)
Offline tychon - 07/12/2009 10:39
Avatar van tychon Nieuw lid Ik heb zojuist dit geprobeerd:

  1. "
  2. SELECT
  3. k.Klant_ID,
  4. k.KlantVoornaam,
  5. k.Klant_Organisatie_ID,
  6. ko.Klant_Organisatie_ID,
  7. ko.OrganisatieNaam
  8. FROM
  9. Klanten AS k
  10. INNER JOIN Klanten_Organisaties AS ko on k.Klant_Organisatie_ID = ko.Klant_Organisatie_ID
  11. WHERE ko.Klant_Organisatie_ID IN (SELECT DISTINCT Klant_Organisatie_ID FROM Klanten_Organisaties)
  12. ORDER BY
  13. OrganisatieNaam ASC


Maar ik krijg nog steeds dubbele ID's.
Offline Berten - 07/12/2009 12:09 (laatste wijziging 07/12/2009 12:58)
Avatar van Berten PHP beginner tychon:

Begrijp ik het goed als ik zeg dat Elke klant toebehoort aan precies 1 organisatie, en dat elke organisatie meerdere klanten heeft.

Verder wil je dan voor elke Organisatie 1 klant ophalen?

Misschien moet je vanuit je organisatie vertrekken ipv vanuit je klanten
Offline tychon - 07/12/2009 13:35
Avatar van tychon Nieuw lid @Berten

Dat klopt, elke klant zit aan 1 organisatie en er zijn organisaties met meerdere klanten.

Nu wil ik een dropdown lijst hebben waar de organisatie worden weergegeven, maar geen dubbele organisatie namen, allemaal 1 keer.
En mocht er al in de db een organisatie_id staan, selecteer dan deze.

Hieronder de code:
  1. <?php
  2. while ($gegevens = mysql_fetch_object($resultKlantnaam))
  3. {
  4. $klant_id = $gegevens->Klant_ID;
  5. $klant_naam = $gegevens->KlantVoornaam;
  6. $klant_onaam = $gegevens->OrganisatieNaam;
  7.  
  8. if($klant_id == $klantnaam)
  9. {
  10. print("<option value=".$klant_id." selected='selected'>".$klant_onaam."</option>");
  11. }
  12. else
  13. {
  14. print("<option value=".$klant_id."'>".$klant_onaam."</option>");
  15. }
  16. }
  17. ?>
Offline Stijn - 07/12/2009 13:51
Avatar van Stijn PHP expert
  1. SELECT
  2. k.Klant_ID,
  3. k.KlantVoornaam,
  4. k.Klant_Organisatie_ID,
  5. ko.OrganisatieNaam
  6. FROM
  7. Klanten AS k
  8. INNER JOIN Klanten_Organisaties AS ko ON k.Klant_Organisatie_ID = ko.Klant_Organisatie_ID
  9. GROUP BY
  10. k.Klant_Organisatie_ID, ko.OrganisatieNaam, k.Klant_ID, k.KlantVoornaam
  11. ORDER BY
  12. ko.OrganisatieNaam ASC


Weet wel dat je niet alle klanten in je dropdown zal hebben. Er wordt gegroepeerd op de organisatie ID. Toch vind ik het een rare vraag die jij stelt aan je databank. Waarom maak je niet gewoon een lijst met de organisaties zonder de klanten. Want je wilt een lijst met de organisaties. Ik snap niet wat je met die klant gaat doen.
Offline Berten - 07/12/2009 14:50
Avatar van Berten PHP beginner
Stijn schreef:
[..code..]

Weet wel dat je niet alle klanten in je dropdown zal hebben. Er wordt gegroepeerd op de organisatie ID. Toch vind ik het een rare vraag die jij stelt aan je databank. Waarom maak je niet gewoon een lijst met de organisaties zonder de klanten. Want je wilt een lijst met de organisaties. Ik snap niet wat je met die klant gaat doen.


Ik vind't inderdaad ook maar vreemd wat hij gaat doen
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.421s