login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Verschil berekenen in Query (Opgelost)

Offline MiST - 26/06/2008 22:33
Avatar van MiSTLid Hey,

Ik werk voor mijn grootmoeder aan een applicatie. Mijn grootmoeder houdt zich veel bezig met het reconstrueren van haar stamboom en daar wil ik dus en applicatie voor maken.

Ik heb hiervoor 2 tabellen in de database. Een daarvan is deze

http://plaatscode.be/11086/

Nu wil ik in een andere tabel de huwelijken opslaan door de id's van 2 personen op te slaan.

Nu wil ik het koppelen van deze personen vereenvoudigen door de personen die in dezelfde periode geboren zijn bovenaan te leggen.
Wat ik dus wil is eigenlijk dat ik een extra kolom kan toevoegen aan mijn query waarin ik SQL vraag om de absolute te berekenen van het verschil van het jaartal in de database en het jaartal van de persoon.

zoiets als abs(yearOfBirth - vastJaartal) AS diff ORDER BY diff ASC

dit is uiteraard mega foute SQL, maar ik hoop dat ik mijn opzet een beetje kan aantonen...

Thanks
MiST

5 antwoorden

Gesponsorde links
Offline Martijn - 27/06/2008 10:31
Avatar van Martijn Crew PHP je moet ff kijken naar HAVING 
Offline nemesiskoen - 27/06/2008 12:17
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. zoiets als abs(yearOfBirth - vastJaartal) AS diff ORDER BY diff ASC


Hier even snel iets om het duidelijk te maken:
vastjaartal: 2000
yob1 (year of birth): 1900
yob2: 1920
yob3: 1850
verschil vastjaartal en yob
=>
100
80
150
ORDER:
150
100
80

wat je evengoed kan ordenen, is gewoon het jaartal:
ORDER BY yearOfBirth
omdat vastjaartal een constante is in die query, niet?
Offline MiST - 27/06/2008 14:34
Avatar van MiST Lid Tuurlijk zou ik kunnen ordenen op jaartal, daar komt het ook op neer, maar ik wil de resultaten net zo sorteren, zodat de personen die het meest gelijk met de andere geboren zijn, bovenaan komen.

Als ik ze botweg op jaartal sorteer is dat niet het geval, dan liggen de ouderen bovenaan en de jongeren onderaan of omgekeerd, en niet de personen die het meerst waarschijnlijk ermee getrouwd kunnen zijn... 

@DeviourSoul: Hoe zou ik dat kunnen aanpakken met HAVING?
Offline nemesiskoen - 28/06/2008 22:37 (laatste wijziging 28/06/2008 22:47)
Avatar van nemesiskoen Gouden medaille

PHP expert
aub:-)

  1. SELECT p1.id, p1.naam, abs( p1.gbjaar - p2.gbjaar ) AS diff
  2. FROM people p1, people p2
  3. WHERE p2.id = ID_VAN_PERSOON AND p1.geslacht != p2.geslacht
  4. GROUP BY diff, p1.id
Offline MiST - 30/06/2008 14:06
Avatar van MiST Lid Thank You very much!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.385s