sql join + groeperen vraagstukje

Pagina: 1
Acties:

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ik heb 2 tabellen, namelijk apartments en availability. In apartments staan appartementen en in de availability tabel staan records met data waarop het apartment niet beschikbaar is (ik heb de naam ook niet bedacht...)

Tabel availability
code:
1
2
3
apartment_id (#)
begin_date (YYYY-MM-DD)
end_date (YYYY-MM-DD)


Tabel apartments
code:
1
2
apartment_id (#)
...


Nu wil ik per apartment het aantal niet beschikbare dagen weten, nu dit is al gelukt alleen ik krijg geen apartmenten terug waar geen record van in de availability tabel bestaat. Iemand een idee hoe ik wel alle apartmenten terug krijg, ook al hebben ze geen records in de availability tabel?

de query die ik gebruik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT 
    apartments.*, 
    SUM( GREATEST( DATEDIFF( LEAST( end_date, ADDDATE( CURDATE() , INTERVAL 60 DAY ) ) , GREATEST( begin_date, CURDATE() ) ) , 0 ) ) 
        AS number_of_inavailable_days
FROM 
    apartments
LEFT JOIN 
    availability 
ON 
    apartments.apartment_id = availability.apartment_id
GROUP BY 
    apartment_id
HAVING 
    District = 'test'
ORDER BY 
    number_of_inavailable_days


alvast bedankt!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ik dacht toch ik de group by aardig door had, kun je misschien zeggen wat ik fout doe dan?

  • xos
  • Registratie: Januari 2002
  • Laatst online: 25-11 17:08

xos

Je doet een group by apartments.apartment_id en selecteert apartments.* Of pakt hij nu availability.apartment_id?

[ Voor 24% gewijzigd door xos op 21-04-2007 17:37 ]


  • winux
  • Registratie: April 2003
  • Laatst online: 27-11 21:30
Inner join gebruiken ipv left join.

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
xos schreef op zaterdag 21 april 2007 @ 17:36:
Je doet een group by apartments.apartment_id en selecteert apartments.* Of pakt hij nu availability.apartment_id?
chips ja de query stond nog net iets anders in me code, en inderdaad ik groepeerde op de pk van availability, thanks nu werkt het! stom foutje

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
winux schreef op zaterdag 21 april 2007 @ 17:43:
Inner join gebruiken ipv left join.
nee, want dan heb je zeker niet alle records uit tabel A, ook al hebben ze geen records in tabel B.

Zowiezo idd eerst eens dat stukje over group by lezen...

https://fgheysels.github.io/

Pagina: 1