Avatar billede bentblod Nybegynder
23. december 2004 - 23:33 Der er 5 kommentarer og
1 løsning

Endnu et problem med SQL

Hej er igang med at søge system hvor man skal kunne søge efter nogle replays til warcraft3... Problemet er at hvis man søger efter bare 2 af den samme race, vil den godkende dem som hvor der bare er mindst 1 af den race. Hvordan kan jeg kontrollere at den ikke bare tar det samme 2 gange? Er jeg nød til at lave noget php kode som håndtere det eller er det muligt via SQL at lave noget som ordner det problem? Den sql sætning jeg er kommet frem til indtil videre er herunder:



SELECT * FROM replays3v3
  WHERE
  (
    (
      navn1 LIKE '%".$navn."%' OR navn2 LIKE '%".$navn."%' OR navn3 LIKE '%".$navn."%' OR navn4 LIKE '%".$navn."%' OR navn5 LIKE '%".$navn."%' OR navn6 LIKE '%".$navn."%'
    )
    AND
    (
      (
        (
          race1='".$spiller1."' OR race2='".$spiller1."' OR race3='".$spiller1."'
        )
        AND
        (
          race1='".$spiller2."' OR race2='".$spiller3."' OR race3='".$spiller3."'
        )
      )
      OR
      (
        (
          race4='".$spiller1."' OR race5='".$spiller1."' OR race6='".$spiller1."'
        )
        AND
        (
          race4='".$spiller2."' OR race5='".$spiller3."' OR race6='".$spiller3."'
        )
      )
    )
  )
Avatar billede bentblod Nybegynder
23. december 2004 - 23:35 #1
hov de steder hvor der står $spiller3 er en fejl... der skal stå $spiller2... :)
Avatar billede michael_stim Ekspert
23. december 2004 - 23:37 #2
Ved ikke rigtigt om jeg fatter hvor du vil hen, men mit gät vil väre at du skal bruge DISTINCT.
Avatar billede bentblod Nybegynder
23. december 2004 - 23:41 #3
Hvad gør det da? altså systemet er sådan at man skal søge på 3v3 kampe, dvs. man skal søge på 3 racer på det ene hold og 3 racer på det andet hold, i dette tilfælde søger man kun på 2 af racerne på det ene hold. Men hvis bare en af dem i databasen har en orc i, vil den acceptere det da både spiller1 og spiller2 finder den race hos en af spillerne. Hjalp det eller?
Avatar billede bentblod Nybegynder
25. december 2004 - 19:48 #4
:( ingen hjælp øv :(
Avatar billede bentblod Nybegynder
05. januar 2005 - 12:53 #5
:(
Avatar billede tagman Nybegynder
10. januar 2005 - 12:28 #6
For det første ligner det elendig database struktur. Man har altså ikke en milliard forskellige race-felter - man har en fremmednøgle og et relationstabel med racerne.

Hvis du gerne vil lave en select, hvor der skal være *mindst* et bestemt antal af pågældende, skal du  gøre således:

select tabel1.felt1, tabel2.felt2 from tabel1, tabel2 where tabel1.fremmednøgle=tabel2.nøgle group by tabel1.fremmednøgle having count(tabel1.fremmednøgle)>2

På den måde får du kun dem, som eksistere mere end 1 gang samtidig med at de bliver linket til tabel2.

Men jeg forstår ikke heeeeeeeelt hvad det er du laver...
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
Kurser inden for grundlæggende programmering

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