Avatar billede prays Nybegynder
27. marts 2008 - 11:01 Der er 5 kommentarer og
1 løsning

Tre tabeller i mysql

Hej,

Jeg har tænkt lidt over den her, men kan ikke finde frem til noget, så håber der er nogen
derude der kan hjælpe mig.
Jeg har tre tabeller. Den første indeholder en beskrivelse af en masse produkter, hvor
hvert produkt har et produkt-id (pid). Tabellen pro_click indeholder rækker, med
informationerne id, pid og username. Pid i pro_click er det samme som et givent pid i
pro_info, mens username identificerer de enkelte brugers klik for det enkelte produkt.
Pro_sub er bygget op på samme måde som pro_click, men den indeholder information om hvor
mange der har købt produktet.
Mit problem er, at jeg ikke kan finde ud af, hvordan jeg skal få den til at udskrive alle
de produkter fra pro_info, som også er til stede i pro_click hvor brugernavnet='x' f.eks.
Og derefter hvordan jeg får den til at udskrive det som en linie, med informationen
description, summen af rækker i pro_click hvor pid er det samme som pid for pro_info og
username='x, og det samme for pro_sub.

Håber der er nogen, som kan hjælpe med mig at løse dette problem.

På forhånd tak! - Har vedlagt databasen beskrivelserne herunder.

pro_info
---------
id
pid
description

pro_click
----------
id
pid
username

pro_sub
--------
id
pid
username
Avatar billede fant0mas Nybegynder
27. marts 2008 - 11:52 #1
Ikke testet:
<?
$query = mysql_query("
SELECT pro_info.description, pro_click.username
FROM pro_info
INNER JOIN pro_click
ON pro_info.pid=pro_click.pid
WHERE pro_click.username = '$username'
") or die(mysql_error());
$antal = mysql_num_rows($query);
while ($res = mysql_fetch_assoc($query)) {
echo 'description: '.$res['description'].'<br>';
}
echo 'Antal: '.$antal.'<br>';
?>

Hvis det virker, så kan du nok også regne den sidste ud :-)
Se mere her: http://www.w3schools.com/sql/sql_join.asp
Avatar billede prays Nybegynder
27. marts 2008 - 16:03 #2
Jeg har lige testet den, og det fungerer, lige bortset fra antallet, hvor den udskrive det samlede, men jeg prøver lige at finde en løsning.
Avatar billede prays Nybegynder
27. marts 2008 - 16:29 #3
Fandt også et andet problem. Hvis der f.eks. under pro_click er to rækker med samme lid, så skriver den to rækker, istedet for en, hvor click bare vises som 2.
Avatar billede fant0mas Nybegynder
27. marts 2008 - 19:04 #4
Jamen så ser det sådan ud:
<?
function antal($pid,$username){
$temp = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM pro_click WHERE pid='$pid' AND username='$username' LIMIT 1");
$result = mysql_query("SELECT FOUND_ROWS()");
$total = mysql_fetch_row($result);
return $total[0];
}

$sql = sprintf("
SELECT DISTINCT pro_info.description, pro_info.pid, pro_click.username
FROM pro_info
INNER JOIN pro_click
ON pro_info.pid=pro_click.pid
WHERE pro_click.username = '%s'",mysql_real_escape_string($username));
$query =  mysql_query($sql)or die(mysql_error());
while ($res = mysql_fetch_assoc($query)) {
echo 'Description: '.$res['description'];
echo ' --> Antal click: '.antal($res['pid'],$res['username']).'<br>';
}
?>
Avatar billede prays Nybegynder
28. marts 2008 - 14:57 #5
Mange tak :) Bare smid et svar, så får du point.
Avatar billede fant0mas Nybegynder
28. marts 2008 - 15:04 #6
God weekend.
svar!
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