1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Werknemers ----------- id name [meer info] ------------------ specialiteiten ------------------ werknemer_id specialiteit_naam waarde ------------------ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | werknemers ------------ 1 - Mark 23 - Pieter 45 - Hans 54 - Willem -------------------------------------- specialiteiten -------------------------------------- 1 - OperatingSystems - Windows 1 - OperatingSystems - Linux 1 - ProgrammingLanguages - PHP 23 - OperatingSystems - MAC 23 - ProgrammingLanguages - ASP 45 - ProgrammingLanguages - JavaScript 45 - ProgrammingLanguages - PHP 45 - ProgrammingLanguages - ASP.NET 54 - OperatingSystems - Windows 54 - ProgrammingLanguages - ASP.NET -------------------------------------- |
1 2 3 4 5 | FROM werknemers w, specialiteiten s WHERE w.id = s.werknemer_id AND (s.specialiteit_naam = 'OperatingLanguages' AND s.waarde IN ('Windows', 'Mac')) AND (s.specialiteit_naam = 'ProgrammingLanguages' AND s.waarde IN ('ASP', 'PHP')) |
1 2 3 4 | FROM werknemers w, specialiteiten s WHERE w.id = s.werknemer_id AND (s.specialiteit_naam = 'OperatingLanguages' AND s.waarde IN ('Windows', 'Mac')) |
De namen van de medewerkers die kunnen werken met Windows en MAC én gespecialiseerd zijn in PHP en ASP wil ik er uit halen..quote:Op dinsdag 24 maart 2009 16:08 schreef Tuvai.net het volgende:
Wat moet uitgebreider? Wat wil je precies uit je database laten rollen? Je huidige queries zijn overigens erg slordig, probeer met (LEFT / RIGHT OUTER) JOINs te werken waar het mogelijk is in plaats van 2 hele tabellen leeg te trekken en daar vervolgens een filtering op toe te passen.
Je voorbeeld-data voldoet niet aan je where. Daarom krijg je 0 results.quote:Op dinsdag 24 maart 2009 16:15 schreef markiemark het volgende:
[..]
De namen van de medewerkers die kunnen werken met Windows en MAC én gespecialiseerd zijn in PHP en ASP wil ik er uit halen..
Gaat het werken wanneer ik left/right/inner joins ga gebruiken? Nooit gedaan namelijk...
Thnx! Hier ga ik ff mee aan de slag!quote:Op dinsdag 24 maart 2009 16:19 schreef Tiemie het volgende:
[..]
Je voorbeeld-data voldoet niet aan je where. Daarom krijg je 0 results.
vind zelf onderstaande netter.
[ code verwijderd ]
zie editquote:Op dinsdag 24 maart 2009 16:20 schreef markiemark het volgende:
[..]
Thnx! Hier ga ik ff mee aan de slag!
1 2 3 4 5 6 7 8 | w.Naam FROM medewerkers w RIGHT OUTER JOIN specialiteiten s ON s.werknemer_id = w.id WHERE s.specialiteit_naam = 'OperatingSystems' AND s.waarde = 'Windows' |
1 2 3 4 5 6 7 8 | w.Naam FROM specialiteiten s LEFT OUTER JOIN werknemers w ON w.id = s.werknemer_id WHERE s.specialiteit_naam = 'OperatingSystems' AND s.waarde = 'Windows' |
Dat sowieso. Een specialiteiten tabel, een gebruikers tabel en een koppeltabel tussen die 2 is voldoende, meerdere vermeldingen in die koppeltabel -> meer specialiteiten.quote:Op dinsdag 24 maart 2009 16:33 schreef Catch22- het volgende:
He?
Sla je nu in een aparte tabel een specialiteit op met een id, naam en waarde?
Ik zou dit toch anders oplossen. Het liefst een tussenentiteit (de kans is groot dat je ooit meerdere specialiteiten wil kunnen toekennen aan iemand) of een veld in de werknemer.
quote:Op dinsdag 24 maart 2009 16:39 schreef Catch22- het volgende:
Juist. En het kan nu voor komen dat je bij een entry 'OperatingSystems' hebt, en 'Operating Systems' en 'Opareating systems'. Die zal je niet bijelkaar kunnen rapen.
Dus, normaliseren!
1 2 3 4 5 | FROM fotoboek_comments GROUP BY foto ORDER BY datum DESC LIMIT 0 , 2 |
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.dit ga ik nog even aan de binnekant van mij ogen bekijken
Ik kan niet zien wanneer het plaatje aangepast is helaasquote:Op dinsdag 24 maart 2009 18:44 schreef GlowMouse het volgende:
Kijken wanneer het plaatje voor het laatst is aangepast, en indien lang genog, een ander plaatje tonen?
SELECT distinct(id), date, comment FROM `fotoboek_comments` order by date limit 0,2quote:Op dinsdag 24 maart 2009 18:19 schreef qwox het volgende:
heb een mysql vraagje, je waarschijnelijk simpel maar ik snap het niet
Onderbouwde uitspraak, vooral omdat je z'n datamodel ook zo goed kan achterhalen bij het zien van 1 SQL statement..quote:Op dinsdag 24 maart 2009 18:33 schreef GlowMouse het volgende:
De performance met jouw datamodel is wel om te janken.
Ziet er leuk uit, maar wekt niet. DISTINCT gaat over een rij.quote:Op dinsdag 24 maart 2009 18:48 schreef slacker_nl het volgende:
[..]
SELECT distinct(id), date, comment FROM `fotoboek_comments` order by date limit 0,2
Daar heb ik voor geleerd. Met dit datamodel krijgt hij die query onmogelijk snel tenzij er slechts een beperkt aantal records in de tabel zit.quote:Op dinsdag 24 maart 2009 18:55 schreef slacker_nl het volgende:
[..]
Onderbouwde uitspraak, vooral omdat je z'n datamodel ook zo goed kan achterhalen bij het zien van 1 SQL statement..
Wat bedoel je met een subquery by wherequote:Je wilt reacties waarvan id (of tijd) gelijk is aan het maximum id (of tijd) bij die persoon. Dat kun je in je WHERE zetten met een mooie subquery. De performance met jouw datamodel is wel om te janken.
Je kunt bijvoorbeeld zeggen: WHERE id = (SELECT max(id) FROM fotoboek_comments WHERE ...)quote:Op dinsdag 24 maart 2009 19:06 schreef qwox het volgende:
[..]
Wat bedoel je met een subquery by where
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |