Avatar billede nightowl24 Nybegynder
02. maj 2007 - 15:06 Der er 7 kommentarer

sql og count

Jeg har 2 tabeller, afdelinger og lejemål.

Hver afdeling kan have mange lejemål.

I min database har jeg lige nu 3 afdelinger. Afdeling 1 indholder 3 lejemål og afdeling 2 indeholder 1 lejemål og afdeling 3 indeholder 0 lejemål.

Hvordan kan jeg vha sql få returneret antallet af afdelinger der har et eller flere lejemål?
Avatar billede fennec Nybegynder
02. maj 2007 - 15:14 #1
Giver dig alle afdelinger med et eller flere afdelinger:

select a.navn, count(l.id) from afdelinger a inner join lejemål l on l.afdID=a.id group by a.navn
having count(l.id) >= 1
Avatar billede pidgeot Nybegynder
02. maj 2007 - 15:25 #2
Hvis du bare skal have antallet af afdelinger, og er lige glad med hvilke, må det være noget i stil med det her du skal bruge:

SELECT COUNT(afdeling_id) AS c FROM lejemål GROUP BY afdeling_id

Hvis der kan være lejemål der ikke skal tælles med (eks. hvis de er udløbede), skal du sætte en WHERE på der filtrerer det fra.
Avatar billede nightowl24 Nybegynder
02. maj 2007 - 16:02 #3
Har forsøgt at tolke jeres indlæg. Jeg er kommet frem til dette:

SELECT tx_ebbolig_afdeling.titel ,COUNT(tx_ebbolig_afdeling.uid) FROM tx_ebbolig_afdeling INNER JOIN tx_ebbolig_lejemaal ON tx_ebbolig_afdeling.uid = tx_ebbolig_lejemaal.afdelingID GROUP BY tx_ebbolig_afdeling.titel HAVING count(tx_ebbolig_afdeling.uid) >=1;

Jeg er ved at udvikle et modul til TYPO3 CMS, derfor er der et prefix på mine tabeller.

Tester sqlsætningen ved brug af MySQLFRONT

Denne sql giver mig 3 rækker
|afdeling 1|1|
|afdeling 2|3|

og det er ikke lige det jeg er ude efter, faktisk skal jeg kun bruge 1 tal og det burde være 2 da jeg har 2 afdelinger med lejemål tilknyttet.
Avatar billede nightowl24 Nybegynder
02. maj 2007 - 16:03 #4
"Denne sql giver mig 3 rækker" - 3 skulle have været 2 :)
Avatar billede fennec Nybegynder
02. maj 2007 - 16:13 #5
select count(afdelingID) from tx_ebbolig_lejemaal group by afdelingID having count(afdelingID) >= 1
Avatar billede nightowl24 Nybegynder
03. maj 2007 - 08:43 #6
Denne returnere at afdeling 1 har ét lejemål og afdeling 2 har 3 lejemål.
Avatar billede fennec Nybegynder
03. maj 2007 - 09:04 #7
Afhængig af hvilken version af MySQL du køre, så burde denne virke:
SELECT COUNT(antal) AS antal
FROM (SELECT COUNT(afdelingID) AS antal
  FROM tx_ebbolig_lejemaal GROUP BY afdelingID HAVING (COUNT(afdelingID) >= 1))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester