![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 16.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam bardzo prosta baze danych :
|kod|uzyty| |aaa| 0| |bbb| 1| |ccc| 1| itp itd pole kod to string (unikalny) varchar pole uzyty to 1 lub 0 i teraz tak user na stronie podaje np 3 kody ja musze sprawdzic czy : podane kody sa w bazie (tzn czy istnieja w polu kod) Jesli istnieja to czy odpowiadajace tym 3m istniejacym kodom pole uzyty dla kazdeggo kodu wynosi 0 myelalem o czyms takim [sql:1:fca5a5a622]Select * FROM tabela WHERE uzyty='0' AND kod='$kod1' OR kod='$kod2' OR kod='$kod3'[/sql:1:fca5a5a622] W takim przypadku gdy podane trzy kody istnieja w bazie zostana zwrocone wiec jesli podane zostaly dane spelniajace zalozenia otrzymam zawsze w zwrocie 3 rekordy... ale czy takie zapytanie jest poprawne i dziala tak jakbym sobie tego zyczyl ? plz help ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Masz pewien blad logiczny, poniewaz operator AND ma wyzszy priorytet niz OR, wiec Twoje zapytanie tak naprawde wyglada tak:
[sql:1:d3490dc6b0]Select * FROM tabela WHERE (uzyty='0' AND kod='$kod1') OR kod='$kod2' OR kod='$kod3'[/sql:1:d3490dc6b0] a powinno wygladac tak: [sql:1:d3490dc6b0]Select * FROM tabela WHERE uzyty='0' AND (kod='$kod1' OR kod='$kod2' OR kod='$kod3')[/sql:1:d3490dc6b0] ale mozna to zapisac wygodniej... [sql:1:d3490dc6b0]Select * FROM tabela WHERE uzyty='0' AND kod IN ('$kod1', '$kod2', '$kod3')[/sql:1:d3490dc6b0] -------------------- Brak czasu :/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:57 |