Avatar billede nemlig Professor
22. april 2013 - 14:22 Der er 7 kommentarer og
1 løsning

Hent antal poster fra tabel nr. 2

Hejsa.
Jeg har en tabel, `type_tabel`, som giver en liste over typer.
Skal jeg liste de forskellige typer, er det blot:

SELECT `typenr` FROM `type_tabel`

I en tabel nr. 2, `varer`, har jeg nogle varer registreret, hvor et af felterne, `type`, har `registreret `typenr`-værdien fra tabellen `type_tabel`

Jeg vil gerne lave et udtræk af `type_tabel`, men som også viser det antal poster i tabellen `varer`, der har de pågældende værdier i feltet `type`.

Et det noget med, at jeg skal bruge JOIN og GROUP.
Avatar billede kgkg Nybegynder
22. april 2013 - 16:40 #1
Du skal JOIN'e dine tabeller.
Avatar billede nemlig Professor
22. april 2013 - 17:04 #2
At jeg JOINER tabellerne er vel ikke nok.......

Hvis jeg i PHP gør ca. sådan her, så virker det:

$sql = "SELECT `typenr` FROM `type_tabel`";
while($row = mysql_fetch_array($res))
    {
        $sql2 = "SELECT COUNT(*) as `antal` FROM `varer` WHERE `type`= '".$row['typenr']."'";
        echo $row['typenr']." - ".$row2['antal'];
    }

Men jeg vil jo gerne, om det kan håndteres i én enkelt SELECT, da jeg tror min PHP-løsning belaster serveren noget mere.
22. april 2013 - 19:03 #3
Ikke testet, men dette skulle virke:

SELECT t.typenr, (SELECT COUNT(*) FROM varer WHERE typenr = t.typenr)
FROM type_tabel t
22. april 2013 - 19:15 #4
...eller, for at få et kortere kolonnenavn,

SELECT t.typenr, (SELECT COUNT(*) FROM varer WHERE typenr = t.typenr) antal
FROM type_tabel t
Avatar billede nemlig Professor
22. april 2013 - 20:25 #5
#3 Tak for bidraget. Hvordan får jeg vist antallet?
Jeg har prøvet sådan her:

SELECT t.typenr, (SELECT COUNT(*)as antal FROM varer WHERE typenr = t.typenr) FROM type_tabel t

Feltet t.typenr vises korrekt, men ikke antal

Jeg udskriver værdierne således:

Echo $row['typenr']." - ".$row['antal'];

Men der vises kun typenr.

#4 Giver Syntaxfejl.
Avatar billede nemlig Professor
22. april 2013 - 20:30 #6
Hov - jeg fik det til at virke med:

SELECT t.typenr, (SELECT COUNT(id)as antal FROM varer WHERE typenr = t.typenr) FROM type_tabel t

Udskiftede COUNT(*) med COUNT(id).

Mange tak for bidragene.

Smid venligst et svar Christian_Belgien for løsningen.
22. april 2013 - 21:56 #7
Svar fra mig.
Avatar billede arne_v Ekspert
23. april 2013 - 00:27 #8
SELECT t.typenr, (SELECT COUNT(id)as antal FROM varer WHERE typenr = t.typenr) FROM type_tabel t

->

SELECT type_tabel.typenr, COUNT(varer.id) AS antal
FROM type_tabel LEFT JOIN varer ON varer.typenr = type_tabel.typenr

?
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