Avatar billede black-eye Nybegynder
24. juli 2007 - 18:19 Der er 8 kommentarer og
1 løsning

mysql 3.23.49

Hejsa eksperter...

Jeg har et problem med en string og mysql v 3.23.49!

sql string er:

$sql = "SELECT w.kills, w.death, w.hs, w.shots, w.hits, w.damage, p.id, p.nick FROM (SELECT stid, kills, death, hs, shots, hits, damage FROM ". $statsprefix ."pl_weapon AS w WHERE name='$_GET[name]' ORDER BY $wplistsort $wplistorder LIMIT 0,40) AS w left join ". $statsprefix ."player AS p on w.stid=p.stid";

Den virker skam godt nok i mysql 5, men ikke i 3.23.49 hvor den skal køre :S

Nogle der ved hvorfor det ikke gør det, og hva der skal til for at lave samme forespørgsel i 3.23.49?
Avatar billede arne_v Ekspert
24. juli 2007 - 18:24 #1
Subqueries er ikke supporteret i nogen form i MySQL 3.
Avatar billede arne_v Ekspert
24. juli 2007 - 18:27 #2
Hvis LIMIT 0,40 ikke er noedvendigt kan du bare joine tabellen ind i hoved select.

Men hvis den er noedvendig kan jeg ikke umiddelbart se nogen loesning.
Avatar billede coderdk Praktikant
24. juli 2007 - 19:19 #3
Hvad med at dele den op i to:

$sql = "
    CREATE TEMPORARY TABLE
        mintemp
    SELECT
        stid
        ,kills
        ,death
        ,hs
        ,shots
        ,hits
        ,damage
  FROM
        ". $statsprefix ."pl_weapon AS w
  WHERE
        name='$_GET[name]'
  ORDER BY
        $wplistsort $wplistorder
  LIMIT
        0,40
    ";

$sql = "
    SELECT
        w.kills
        ,w.death
        ,w.hs
        ,w.shots
        ,w.hits
        ,w.damage
        ,p.id
        ,p.nick
    FROM
        mintemp AS w
  LEFT JOIN
        ". $statsprefix ."player AS p
  ON
        w.stid=p.stid";

Så vidt jeg husker understøttes TEMPORARY i 3.23 - Du skal bare sørge for at bruge samme connection - Når den pågældende connection lukkes, droppes tabellen...
Avatar billede coderdk Praktikant
24. juli 2007 - 19:20 #4
Jeg kan ikke lige overskue om du bare, som Arne skriver, kan lave JOIN og flytte LIMIT "ned"
Avatar billede black-eye Nybegynder
24. juli 2007 - 19:49 #5
Limit skal være på weapon tablen da den meget let kommer op over 30.000 rækker og derfor vil gøre left join til en meget kedeligt bekendtskab.

Sådan lige på stående fod virkede den kode ikke coderdk, men prøver lige at ændre lidt i den...
Avatar billede black-eye Nybegynder
24. juli 2007 - 19:51 #6
Der kom den, mange tak coderdk, smid et svar.
Avatar billede coderdk Praktikant
24. juli 2007 - 20:23 #7
Ok :)
Avatar billede arne_v Ekspert
25. juli 2007 - 02:22 #8
Den temporære tabel var en smart finesse.
Avatar billede coderdk Praktikant
25. juli 2007 - 19:06 #9
arne_v, tak :)

black-eye, tak for point :)
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
Computerworld tilbyder specialiserede kurser i database-management

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