/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
COUNT(), hvad går der galt?
Fra : Stefan Bruhn


Dato : 22-07-01 16:03

Hej!

<?
$res = query("SELECT COUNT(3x7_lyrics.id) AS lyr, COUNT(3x7_artists.id) AS art,COUNT(3x7_albums.id) AS alb FROM 3x7_lyrics,3x7_artists,3x7_albums") or die(error(__LINE__,__FILE__));
$count = fetch_array($res);

echo "<p>$count[art] - $count[alb] - $count[lyr]</p>";
?>

Ovenstående outputter følgende:
4029900 - 4029900 - 4029900

Det *burde* outputte dette:
38 - 101 - 1050

Dette her virker, men det virker lidt dumt at have tre connections:

<?
$result = query("SELECT COUNT(*) AS x FROM 3x7_lyrics") or die(error(__LINE__,__FILE__));
$lyrics = fetch_array($result);

$resultx = query("SELECT COUNT(*) AS x FROM 3x7_artists") or die(error(__LINE__,__FILE__));
$artists = fetch_array($resultx);

$resulty = query("SELECT COUNT(*) AS x FROM 3x7_albums") or die(error(__LINE__,__FILE__));
$albums = fetch_array($resulty);

echo "$artists[x] - $albums[x] - $lyrics[x]";
?>

Jeg håber der er nogen der kan hjælpe, på forhånd tak! ;)

Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>

 
 
Finn Nielsen (22-07-2001)
Kommentar
Fra : Finn Nielsen


Dato : 22-07-01 16:51

Stefan Bruhn <news003@3x7.dk> writes:

> <?
> $res = query("SELECT COUNT(3x7_lyrics.id) AS lyr, COUNT(3x7_artists.id) AS art,COUNT(3x7_albums.id) AS alb FROM 3x7_lyrics,3x7_artists,3x7_albums") or die(error(__LINE__,__FILE__));
> $count = fetch_array($res);
>
> echo "<p>$count[art] - $count[alb] - $count[lyr]</p>";
> ?>
>
> Ovenstående outputter følgende:
> 4029900 - 4029900 - 4029900
>
> Det *burde* outputte dette:
> 38 - 101 - 1050

Næh. Du tæller over et resultatsæt, ikke over de enkelte tabeller.
Når du joiner tre tabeller med henholdsvis 38, 101 og 1050 rows uden
restriktioner indeholder resultatet jo 38*101*1050=4029900 rows (som du
så tæller tre gange).

4029900 - 4029900 - 4029900 er det rigtige resultat på din forespørgsel.

> Dette her virker, men det virker lidt dumt at have tre connections:

[kode]

Det er den korrekte måde at gøre det på.

Desuden, tre forespørgsler er ikke lig tre connections, du har kun en
connection.

--
Finn Nielsen - http://www.zznyyd.dk/

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste