[PHP] Problem z zapytaniem, Zbyt wiele AND, OR ??? |
[PHP] Problem z zapytaniem, Zbyt wiele AND, OR ??? |
-uniejów- |
5.12.2012, 11:01:52
Post
#1
|
Goście |
Witam.
Mam mały problem z poprawnym wyświetleniem rekordów. Nie wiem, być może chodzi o to, że jest tego "za dużo", ale po prostu jest tak, że nie chcę wyświetlać niektórych tytułów oraz "podtytułów", a reszta jak najbardziej ma się pojawiać. W tabeli mam więc (m.in.) pola: cat - kategoria; jest ich w sumie 5, ale chcę wyświetlać tylko z kategorii 2; tu mała uwaga - czasem pojawiają się (nie wiem czemu) rekordy z cat='1' a zapis w zapytaniu WHERE cat = '2' AND cat !='1' (...) nie działa... title - tytuł arta titlea - "podtytuł"
Co mam w tym zapytaniu źle, że wyświetla tak, jak nie powinno? Bardzo proszę o pomoc. |
|
|
5.12.2012, 11:08:28
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
1) Jeśli używasz % to masz używać LIKE/NOT LIKE a nie =/!=
2) Z OR oraz AND jest dokładnie tak samo jak w matematyce z + oraz * 2+2*3 da zupełnie inny wynik niż (2+2)*3 W zapytaniu również w zależności od tego co chcesz osiągnąć musisz używać nawiasów by mówić co jest ważniejsze od czego. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-uniejów- |
5.12.2012, 17:52:13
Post
#3
|
Goście |
Próbuję, ale nic z tego nie wychodzi.
Obecny kod:
Daje te same rezultaty - czyli te same (nazwijmy to) "nieoczekiwane" wyniki. Nie wiem, o co chodzi z porównaniem z matematyką. Fakt faktem: 2+2*3 da nam 8 ale już (2+2)*3 da nam 12 Ale za bardzo nie wiem, jak mam tę matmę "przetłumaczyć" na zapytanie (bo chyba o to chodzi). Zapytanie powinno brzmieć: POKAŻ: - wszystko TYLKO z kategorii 2 (czyli cat='2') - tytuły niezawierające w sobie fraz: "Unie", "Mater", "Pozosta" - podtytuły niezawierające w sobie fraz: "dopłat", "Odc." - podtytuły zawierające w sobie frazy: "państw", "flag", "hymn" Chyba, że coś źle rozumiem |
|
|
5.12.2012, 17:55:43
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
+ to OR
* to AND Prosta logika... Bez nawiasów najpierw wykonuje się *AND a dopiero potem +OR
Choć nadal nie wiem czy dobrze zrozumiałem to czego ma szukać. Nie mniej jednak w kodzie powyżej pokazałem ci o co chodzi z nawiasami. Może teraz będzie ci łatwiej. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-uniejów- |
5.12.2012, 18:27:28
Post
#5
|
Goście |
Uuuu... teraz nic nie pokazuje - w miejscu, gdzie mają się wyświetlać wyniki jest "biało" :|
|
|
|
5.12.2012, 18:30:45
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Bo nie ma rekordów spełniających te warunki.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-uniejów- |
5.12.2012, 18:36:46
Post
#7
|
Goście |
Sprawdzięłm to na wyszukiwarce: rekorsy takie są.
Postanowiłem usunąć wszystkie title NOT LIKE - dalej to samo (czyli biało) Usunąłem to, co w nawiasie i... ok - wyświetla, tyle, że tylko rekordy zawierające w "podtytule" państw. A jeszcze powinno pokazać "flag" oraz "hymn". Kurcze - myślałem, że potrafię pisać zapytania... |
|
|
5.12.2012, 20:06:29
Post
#8
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) |
Cytat - wszystko TYLKO z kategorii 2 (czyli cat='2') - tytuły niezawierające w sobie fraz: "Unie", "Mater", "Pozosta" - podtytuły niezawierające w sobie fraz: "dopłat", "Odc." - podtytuły zawierające w sobie frazy: "państw", "flag", "hymn"
Powinno działać. LIKE '%tekst%' ewentualnie można zamienić na LIKE 'tekst%' wówczas zostaną wykluczone lub dobrane rekordy zaczynające się od 'tekst'. Ten post edytował d3ut3r 5.12.2012, 20:07:09 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
-uniejów- |
5.12.2012, 20:42:33
Post
#9
|
Goście |
d3ut3r - dziękuję BARDZO!
Działa idealnie nospor - dzięki za wyjaśnienia -> przydadzą się na przyszłość Pozdrawiam! |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 21:35 |