Avatar billede hyperactive Nybegynder
12. marts 2003 - 13:47 Der er 17 kommentarer og
1 løsning

SQL sætning returnerer ingen data

Jeg har følgende SQL sætning, som indeholder en eller anden fejl, eftersom den ikke returnerer nogen data, selvom der er data i begge tabellerne:
SQL1 = "SELECT partnere.id, partnere.navn, partnere.firma, partnere.www, partnere.email, partnerklik.id, COUNT(partnerklik.id) AS antalklik FROM partnere LEFT JOIN partnerklik ON partnere.id = partnerklik.partnerid GROUP BY partnere.id ORDER BY antalklik DESC;"
       
Hvad er der galt?
Avatar billede nuno Nybegynder
12. marts 2003 - 14:27 #1
Kan det være:

SQL1 = "SELECT partnere.id, partnere.navn, partnere.firma, partnere.www, partnere.email, COUNT(partnerklik.id) AS antalklik FROM partnere LEFT JOIN partnerklik ON partnere.id = partnerklik.partnerid GROUP BY partnere.id, partnere.navn, partnere.firma, partnere.www, partnere.email ORDER BY antalklik DESC"

?

/nuno
Avatar billede hyperactive Nybegynder
12. marts 2003 - 14:30 #2
nuno.... Det er det samme problem :o(
Avatar billede nozio Nybegynder
12. marts 2003 - 14:48 #3
Hvordan er partnerklik og partnere bygget op mht. felter ?
Avatar billede hyperactive Nybegynder
12. marts 2003 - 14:59 #4
Sådan:

PARTNERE:
id, navn, firma, adresse, postnr, bynavn, telefon,www, email

PARTNERKLIK:
id, partnerid, ip, dato
Avatar billede nuno Nybegynder
12. marts 2003 - 16:41 #5
SELECT id, navn, firma, adresse, postnr, bynavn, telefon, www, email, count(partnerid)
FROM PARTNERE t1 LEFT JOIN PARTNERKLIK t2 ON t1.id = t2.partnerid
GROUP BY id, navn, firma, adresse, postnr, bynavn, telefon, www, email
ORDER BY count(partnerid) DESC

det der udtræk har jeg kørende i en access tabel, der er en pendant til din - og det giver mig antallet af instanser af PARTNERE.id i PARTNERKLIK - fordelt på hvert id - det giver nul, hvis id'et ikke findes i PARTNERKLIK

Håber det hjalp :)

/nuno
Avatar billede nuno Nybegynder
12. marts 2003 - 16:43 #6
bare udelad de tabelaliaser jeg har taget med (t1 og t2 samt t1. og t2.) - de er ikke nødvendige her når der ikke er navnesammenfald på tabellernes felter

/nuno
Avatar billede hyperactive Nybegynder
16. marts 2003 - 13:12 #7
Nuno....

Jeg får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[TCX][MyODBC]Column: 'id' in field list is ambiguous

/admin/includes/user.asp, line 4098


De har jo begge et felt, der hedder id..... Og hvor kommer t1 og t2 fra???? Kan jeg tilføje en tabel mere, som hedder SALG og indeholder felterne id, partnerid, salg
Avatar billede nuno Nybegynder
16. marts 2003 - 14:01 #8
SELECT t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email, t2.count(partnerid)
FROM PARTNERE t1 LEFT JOIN PARTNERKLIK t2 ON t1.id = t2.partnerid
GROUP BY t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email
ORDER BY count(t2.partnerid) DESC

t1 og t2 er bare 2 tabel aliaser jeg har givet tabellerne - det svarer til at man skriver partnere.id, partnere.navn osv. - altså bare en reference til tabellerne (det er jo nemmere at skrive t1 end partnere og t2 istedet for partnerklik).

Hvordan vil du bruge tabellen salg? Skal den bare med i udtrækket som en-til-en relation mellem partnertabellen?

/nuno
Avatar billede nuno Nybegynder
16. marts 2003 - 14:01 #9
eller skal du fx sammentælle det samlede salg pr. partner?
Avatar billede hyperactive Nybegynder
16. marts 2003 - 14:12 #10
nuno.... Jeg skal have en sammenlægning af tallene i salg - altså en SUM() for hver partner
Avatar billede hyperactive Nybegynder
16. marts 2003 - 14:21 #11
You have an error in your SQL syntax near '(partnerid) FROM partnere t1 LEFT JOIN partnerklik t2 ON t1.id = t2.partnerid GR' at line 1
Avatar billede nuno Nybegynder
16. marts 2003 - 14:47 #12
hov sorry - det gik lidt for hurtigt:

SELECT t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email, count(t2.partnerid)
FROM PARTNERE t1 LEFT JOIN PARTNERKLIK t2 ON t1.id = t2.partnerid
GROUP BY t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email
ORDER BY count(t2.partnerid) DESC
Avatar billede nuno Nybegynder
16. marts 2003 - 14:53 #13
SELECT t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email, count(t2.partnerid), (SELECT sum(i2.salg)
FROM PARTNERE i1 LEFT JOIN Salg i2 ON i1.id = i2.partnerid
WHERE i1.id = t1.id
GROUP BY i1.id)
FROM PARTNERE AS t1 LEFT JOIN PARTNERKLIK AS t2 ON t1.id=t2.partnerid
GROUP BY t1.id, t1.navn, t1.firma, t1.adresse, t1.postnr, t1.bynavn, t1.telefon, t1.www, t1.email
ORDER BY count(t2.partnerid) DESC

så tror jeg vist du skulle få det hele med :)

/nuno
Avatar billede hyperactive Nybegynder
16. marts 2003 - 14:54 #14
Hmmm.... Nu får jeg en:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[TCX][MyODBC]Invalid use of group function

Øvøvøvøvøvøvøv
Avatar billede hyperactive Nybegynder
16. marts 2003 - 15:02 #15
nuno.... Den sidste giver den her fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax near 'SELECT sum(i2.salg) FROM PARTNERE i1 LEFT JOIN Salg i2 ON i1.id = i2.partnerid W' at line 1

P.S.... Du får sq 100 ekstra pts hvis det her lykkes ;o)
Avatar billede nuno Nybegynder
16. marts 2003 - 15:14 #16
hvad er det for en database du bruger?
Avatar billede hyperactive Nybegynder
16. marts 2003 - 15:17 #17
MySQL
Avatar billede nuno Nybegynder
16. marts 2003 - 17:11 #18
hmm jeg synes at MySQL er lidt underlig på det punkt - men det er nok bare mig, der ikke forstår at bruge den rigtigt.

Under alle omstændigheder kan dette

SELECT t1.id, t1.navn, count(t2.partnerid) as ClickCount
FROM partnerklik t2 RIGHT JOIN partnere t1 ON t1.id=t2.partnerid
GROUP BY t1.id, t1.navn
ORDER BY ClickCount DESC

give dig antal klik pr. partner - du skal bare selv lige tilføje de andre felter - dem gad jeg ikke oprette i min MySQL db af dovenskabsmæssige årsager ;)

Bare husk - at for hvert tx.felt du tilføjer i din select - da skal du også tilføje det samme tx.felt i din group by, når du bruger funktioner som Count, Sum osv.

Jeg prøver lige om jeg kan finde ud af at få den sidste tabel joinet med i udtrækket.

/nuno
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
Kurser inden for grundlæggende programmering

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