|
| Max forekomster fra mysql Fra : Mads Madsen |
Dato : 30-07-07 08:35 |
|
Hej Gruppe
Jeg skal have lavet et udtræk fra en mysqldatabase
Databasen indeholder fangstrapporter om nogle fisk og hvem der har
fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
gange i outputtet
Jeg har følgende:
<?
echo "<center><table border=1 width=481 cellspacing=1
bordercolorlight=#000000 bordercolordark=#000000 style=border-
collapse:collapse>";
echo "<tr><td width=493 colspan=6 align=center><p
align=left><b>Havørred</b></p></td></tr><tr><td width=64
align=center> <p align=left>Placering</p></td><td width=51
align=center><p align=left>Længde</p></td><td width=46 align=center><p
align=left>Vægt</p></td><td width=159 align=center><p
align=left>Jæger</p></td><td width=83 align=center><p align=left>Dato</
p></td><td width=64 align=center><p align=left>Point</p></td></tr>";
$query = "SELECT * FROM konkurrence ORDER BY vaegt DESC, laengde DESC
LIMIT 10";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
if ("{$row['art']}" =="Havørred"){
echo "<tr><td width=64 align=center>";
echo $placering++;
echo "</td>";
echo "<td width=51 align=center>{$row['laengde']}</td>";
echo "<td width=46 align=center>{$row['vaegt']}</td>";
echo "<td width=159 align=left>{$row['navn']}</td>";
echo "<td width=83 align=center>{$row['dato']}</td>";
echo "<td width=64 align=center>";
echo $point--;
echo "</td>";
echo "</tr>";
}
}
echo "</table></center>";
?>
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 08:57 |
|
Mads Madsen wrote:
> Hej Gruppe
> Jeg skal have lavet et udtræk fra en mysqldatabase
> Databasen indeholder fangstrapporter om nogle fisk og hvem der har
> fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
> gange i outputtet
> Jeg har følgende:
Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML du paster har intet med databasen at gøre.
| |
Mads Madsen (30-07-2007)
| Kommentar Fra : Mads Madsen |
Dato : 30-07-07 08:59 |
|
> Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML du paster har intet med databasen at gøre.
Tabellen indeholder:
Længde
Vægt
Jæger
Dato
Mads
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 09:14 |
|
Mads Madsen wrote:
>> Vi skal have at vide hvordan tabel-strukturen er indrettet. Den HTML
>> du paster har intet med databasen at gøre.
>
> Tabellen indeholder:
> Længde
> Vægt
> Jæger
Jæger=Fisker?
| |
Mads Madsen (30-07-2007)
| Kommentar Fra : Mads Madsen |
Dato : 30-07-07 09:14 |
|
> Jæger=Fisker?
hehe jeps
Mads
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 09:21 |
|
Mads Madsen wrote:
>> Jæger=Fisker?
>
> hehe jeps
>
> Mads
OK. En tabel med
> Længde
> Vægt
> Jæger
Den havde vel også
>$row['art']"
>{$row['dato']
>{$row['navn']} ??
Er der ikke et ID?
altså
id
laengde
fisker
navn
vaegt
art
dato
????
| |
Mads Madsen (30-07-2007)
| Kommentar Fra : Mads Madsen |
Dato : 30-07-07 09:27 |
|
Nu skal jeg nok lige vågne op.
art laengde vaegt navn dato
navn er lig med fisker som var lig med jæger
er det en god ide med id?
Mads
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 09:33 |
|
Mads Madsen wrote:
> Nu skal jeg nok lige vågne op.
>
> art laengde vaegt navn dato
>
> navn er lig med fisker som var lig med jæger
Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ?? Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)
> er det en god ide med id?
Det er altafgørende hvis du ønsker at kunne finde posterne frem igen, med mindre "dato" er et tidsstempel.
| |
Mads Madsen (30-07-2007)
| Kommentar Fra : Mads Madsen |
Dato : 30-07-07 09:35 |
|
> Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ?? Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)
CREATE TABLE `konkurrence` (
`art` varchar(20) collate latin1_danish_ci NOT NULL default '',
`laengde` varchar(10) collate latin1_danish_ci NOT NULL default '',
`vaegt` varchar(10) collate latin1_danish_ci NOT NULL default '',
`navn` varchar(30) collate latin1_danish_ci NOT NULL default '',
`dato` varchar(10) collate latin1_danish_ci NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;
Er det det?
Mads
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 12:06 |
|
Mads Madsen wrote:
>> Kan du ikke lave et dump af tabellen? En desc min_fiske_tabel ??
>> Eller hvordan det ser ud i PhpMyAdmin (eller hvad du bruger)
>
> CREATE TABLE `konkurrence` (
> `art` varchar(20) collate latin1_danish_ci NOT NULL default '',
> `laengde` varchar(10) collate latin1_danish_ci NOT NULL default '',
> `vaegt` varchar(10) collate latin1_danish_ci NOT NULL default '',
> `navn` varchar(30) collate latin1_danish_ci NOT NULL default '',
> `dato` varchar(10) collate latin1_danish_ci NOT NULL default ''
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;
>
> Er det det?
Yes.
"Databasen indeholder fangstrapporter om nogle fisk og hvem der har
fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
gange i outputtet"
Altså: Du vil have en liste af fisk, sorteret på fisk (kan jeg forstå udfra $row[art]='havørred') hvor en fisker kun må optræde max 3 gange, indenfor hver fiskeart?
Jeg har prøvet efter alle kunstens regler, men jeg kan ikke få det til at lade sig gøre. Andre kan måske. Der er jo ingen måde at sondre/parre resultaterne på, når det hele ligger i én ikke-indekseret, ikke indekser-bar tabel.
Du må enten gøre det enkeltvis i PHP, som dit eksempel lægger op til, dvs traversere gennem samtlige poster og så holde styr på om en fisker optræder med 3 forekomster indenfor samme fisketype - ELLER, langt at foretrække - normalisere tabellerne. Du får aldrig noget fornuftigt ud af den skitserede struktur. Der vil komme et gigantisk tidsmæssigt og redundant overhead, blot med få poster.
Forslag til bedre tabelstruktur
FISKEART
----------------------------
fiskeart_id
fiskeart_navn
FISKER
----------------------------.
fisker_id
fisker_navn
KONKURRENCE
----------------------------
konkurrence_id
fisker_id
fiskeart_id
konkurrence_vaegt
konkurrence_laengde
konkurrence_dato
på den måde bliver det ingen sag at jonglere rundt med posterne, og f.eks kun vise konkurrence-forekomster af en bestemt fisketype fordelt på fiskere med max 3 konkurrenceforekomster for hver fisker.
| |
Jesper Staun Hansen (30-07-2007)
| Kommentar Fra : Jesper Staun Hansen |
Dato : 30-07-07 11:40 |
|
Mads Madsen wrote:
> Hej Gruppe
> Jeg skal have lavet et udtræk fra en mysqldatabase
> Databasen indeholder fangstrapporter om nogle fisk og hvem der har
> fanget dem. Jeg skal have lavet sådan en fisker højst må forekomme 3
> gange i outputtet
> Jeg har følgende:
>
> <?
> echo "<center><table border=1 width=481 cellspacing=1
> bordercolorlight=#000000 bordercolordark=#000000 style=border-
> collapse:collapse>";
> echo "<tr><td width=493 colspan=6 align=center><p
> align=left><b>Havørred</b></p></td></tr><tr><td width=64
> align=center> <p align=left>Placering</p></td><td width=51
> align=center><p align=left>Længde</p></td><td width=46 align=center><p
> align=left>Vægt</p></td><td width=159 align=center><p
> align=left>Jæger</p></td><td width=83 align=center><p align=left>Dato</
> p></td><td width=64 align=center><p align=left>Point</p></td></tr>";
>
> $query = "SELECT * FROM konkurrence ORDER BY vaegt DESC, laengde DESC
> LIMIT 10";
>
> $result = mysql_query($query);
> while($row = mysql_fetch_assoc($result))
> {
> if ("{$row['art']}" =="Havørred"){
>
> echo "<tr><td width=64 align=center>";
> echo $placering++;
> echo "</td>";
> echo "<td width=51 align=center>{$row['laengde']}</td>";
> echo "<td width=46 align=center>{$row['vaegt']}</td>";
> echo "<td width=159 align=left>{$row['navn']}</td>";
> echo "<td width=83 align=center>{$row['dato']}</td>";
> echo "<td width=64 align=center>";
> echo $point--;
> echo "</td>";
> echo "</tr>";
> }
> }
> echo "</table></center>";
> ?>
>
Mon SELECT TOP kan nogle tricks?
| |
Ukendt (30-07-2007)
| Kommentar Fra : Ukendt |
Dato : 30-07-07 12:07 |
|
Jesper Staun Hansen wrote:
> Mon SELECT TOP kan nogle tricks?
Select Top kan ingen tricks i mysql - hvor det hedder limit.
| |
|
|