27. september 2005 - 21:03Der er
22 kommentarer og 1 løsning
WHERE antal rækker > 1
Hej.
Som spørgsmålets titel:
Hvordan finder jeg resultater, hvor antallet af rækker med indholdet af et felt er større end 1.
Altså, et tabelstruktureksempel: felt a a b a c c
Så vil jeg kun have listet rækkerne der indeholder a og c. En GROUP BY-løsning vil ikke du'. Måske count, men kan ikke helt få den til at virke alligevel...
Det duer jo ikke for mig, da jeg ikke skal have sorteret nogen rækker ud. Datetime-feltet kan jo godt være forskelligt, og indeholde data jeg vil bruge. Hvis jeg indsætter GROUP BY vil jeg kun få et datetime felt pr. playerid ?!
Hvis datetime feltet er forskelligt for samme værdi af det felt du skal lave GROUP BY på, så har du da et problem af betydning: hvilken af de forskellige værdier skal den så vise?
Den skal vise begge 2. Jeg vil blot ikke bruge hverken playerid, datetime eller noget andet felt, hvis ikke antallet af rækker med det samme playerid er mere end 1.
Ok, har også nu klaret det med en lidt snusket php-metode, som er ret irriterende.
Om databasen understytter subselects tror jeg, men jeg kan ikke engang lige huske hvordan man finder versionen. Det er noget med SELECT mysql_version() ?
Ja, det ved jeg ærlig talt ikke helt. Men der har lige været 10 minutter hvor jeg intet har kunnet foretage mig, da min forespørgsel åbenbart har ligget og kørt. Ikke engang phpMyAdmin kunne vise tabellen.
Hvilket så egentlig var noget ævl, for hvis intet andet kan tilgå tabellen så er det jo klart at phpMyAdmin heller ikke kan... Men nu er den da oppe i omdrejninger igen.
Jeg ved godt det er en voldsom forespørgsel, og det fik jeg da også bekræftet, men burde følgende virkelig være _så_ voldsomt:
$q = mysql_query("select adminban.playerid, adminban.reason as abreason, adminlogold.player_id, adminlogold.reason as alreason from adminban left join adminlogold on (adminlogold.time = adminban.datetime) where playerid in (select playerid from adminban group by datetime having count(*)>1) order by adminban.datetime LIMIT 20");
?
Så snart jeg fjerne order by-delen er der ikke de store problemer. Tabellen indeholder ca. 15K rækker, så det er da en sjat.
Umiddelbart skulle der ikke være ens felter i de to tabeller på nær lige reason, som jeg kalder henholdsvis abreason og alreason. Det der også undrer mig er, at den tilsyneladende ikke timede-out efter de normale 30 sekunder, men åbenbart har fortsat.
Synes godt om
Ny brugerNybegynder
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.