Avatar billede maabjerg Nybegynder
26. marts 2005 - 18:24 Der er 13 kommentarer og
1 løsning

fejl i SQL sætning?

Hej

Jeg vil lave en kode som udskriver det produkt der er blevet mest solgt over min ehandel.

Jeg har alle de solgte varer i tabellen:
bs_ehandel_ordrevarer

og alle varerenes oplysninger er i:
bs_ehandel_subvarer

Jeg skal så tælle hvor mange der er af: bs_ehandel_subprodukter's "id" i bs_ehandel_ordrevarer heri kaldet: "produktid".

Hvordan gør jeg?

Jeg har lavet lidt kode men det virker ikke:

$sql = mysql_query("SELECT bs_ehandel_subprodukter.pris, bs_ehandel_subprodukter.vareid count( bs_ehandel_subprodukter.id ) AS cnt
FROM bs_ehandel_ordrevarer, bs_ehandel_subprodukter
WHERE bs_ehandel_subprodukter.id = bs_ehandel_ordrevarer.produktid
GROUP BY bs_ehandel_subprodukter.id
ORDER BY cnt DESC  LIMIT 1");
$rs = mysql_fetch_array($sql);
Avatar billede coderdk Praktikant
26. marts 2005 - 18:29 #1
Dette burde hente antal og id ud, for alle varer som der er ordrer på:

SELECT
    v.id
    ,COUNT( v.id ) AS antal
FROM
    bs_ehandel_subvarer v
INNER JOIN bs_ehandel_ordrevarer o ON
    v.id = o.produktid
GROUP BY
    v.id
Avatar billede barklund Nybegynder
26. marts 2005 - 18:40 #2
Så vidt jeg kan se, så er eneste fejl i din query (den oprindelige) at du mangler et komma før count. Så burde den virke fint.

Men hvis nu du havde givet os fejlmeddelelsen med, så ville det have hjulpet lidt :)
Avatar billede maabjerg Nybegynder
26. marts 2005 - 18:40 #3
okay.... hvad er "v"?
Avatar billede maabjerg Nybegynder
26. marts 2005 - 18:41 #4
Det her er fejlmeddelsen:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

men prøver lige det i skrev.
Avatar billede barklund Nybegynder
26. marts 2005 - 18:45 #5
Det er jo ikke sql-fejlen - sql fejlen finder du ved at lave en or die(mysql_error()) efter din mysql_query()
Avatar billede maabjerg Nybegynder
26. marts 2005 - 18:48 #6
det virkede med det komma. :)...

men ved ik hvem af jer der vil have point?
Avatar billede coderdk Praktikant
26. marts 2005 - 18:49 #7
Manglede der et komma?
Avatar billede coderdk Praktikant
26. marts 2005 - 18:50 #8
v er i dette tilfælde et alias for bs_enhandel_subvarer, den kan også skrives (pænere?) sådan:

SELECT
    v.id
    ,COUNT( v.id ) AS antal
FROM
    bs_ehandel_subvarer AS v
INNER JOIN bs_ehandel_ordrevarer AS o ON
    v.id = o.produktid
GROUP BY
    v.id
Avatar billede maabjerg Nybegynder
26. marts 2005 - 18:51 #9
ja der manglede et komma....
Avatar billede barklund Nybegynder
26. marts 2005 - 18:51 #10
Der manglede bare et komma i den sætning, som maabjerg selv havde skrevet oprindeligt. :)
Avatar billede coderdk Praktikant
26. marts 2005 - 18:55 #11
Aaah :)
Avatar billede coderdk Praktikant
26. marts 2005 - 18:56 #12
Hvis du brugte din oprindelige bør barklund have pointene! ;)
Avatar billede maabjerg Nybegynder
27. marts 2005 - 00:47 #13
Okay, hvis i er enige om det, så er det ok :)

Men tak for hjælpen begge to :)
Avatar billede barklund Nybegynder
27. marts 2005 - 16:40 #14
Tark for points :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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