FAQ |
Kalender |
2008-01-30, 20:10 | #1 | ||
|
|||
Har WN som tidsfördriv
|
MySQL lyder inte mig :huh:
Detta är min query: Kod:
SELECT * FROM trainingbook_entries WHERE user = '533915543' OR user = '544576097' OR user = '573490598' OR user = '620155054' OR user = '671980664' OR user = '709760429' OR user = '740625439' OR user = '777390801' OR user = '779794282' OR user = '781018407' AND date = '2008-01-30' ORDER BY id DESC LIMIT 0 , 30 Som ni ser så har ingen av fälten "date" värdet 2008-01-30 ! <_< Finns det något jag kan göra? Tack på förhand! |
||
Svara med citat |
2008-01-30, 20:25 | #2 | ||
|
|||
Klarade millennium-buggen
|
Till att börja med borde du använda WHERE user IN(värde, värde, värde) istället för OR-frågan. Felet beror på att AND binder hårdare än OR. I det här fallet blir din fråga de första valen ELLER user = '781018407' AND date = '2008-01-30'. DU måste alltså lägga en parantes kring alla OR-grejerna.
Sedan känns det inte så smidigt att lagra ett heltal som en sträng heller... |
||
Svara med citat |
2008-01-30, 20:25 | #3 | ||
|
|||
Mycket flitig postare
|
Använda parentes.
Eller skriva den som Kod:
SELECT * FROM trainingbook_entries WHERE user IN('533915543', '544576097', ...) AND date = '2008-01-30' ORDER BY id DESC LIMIT 0 , 30 |
||
Svara med citat |
2008-01-30, 20:43 | #4 | ||
|
|||
Har WN som tidsfördriv
|
Okej!
Tack så mycket, funkar utmärkt! |
||
Svara med citat |
2008-01-30, 21:13 | #5 | ||
|
|||
Klarade millennium-buggen
|
När du villkorar ett värde som du vet är ett tal så ska du ta bort fnuttarna. Annars måste mysql slösa kraft på att göra om talet till en sträng innan jämförelsen.
...where user=123456 ska det vara och inte ...where user='123456' |
||
Svara med citat |
2008-01-31, 13:43 | #6 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2008-01-31, 14:24 | #7 | ||
|
|||
Klarade millennium-buggen
|
Citat:
|
||
Svara med citat |
2008-01-31, 21:55 | #8 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Tabellen är BigINT, är det smartare med user=123456 då? |
||
Svara med citat |
2008-01-31, 22:14 | #9 | |||
|
||||
Mycket flitig postare
|
Citat:
Det finns vissa skillnader mellan att använda strängar och tal inte bara i effektivitet och platsnyttjande. Vid strängar är exempelvis stängarna '001234', '01234' och '1234' helt skilda "värden". Om det hande om tal så är det ingen skillnad mellan 001234 och 1234. Samma sak gäller om du anger bråktal med eller utan ' Talet 234.3 är samma tal som 234.300 men strängen '234.3' är inte detsamma som '234.300'. Det kan förutom resursslöseri alltså även innebära svårupptäckta buggar. |
|||
Svara med citat |
2008-02-01, 17:04 | #10 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
|
||
Svara med citat |
Svara |
|
|