Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]zapytanie z wcześniejszym sprawdzeniem warunków
krzesik
post
Post #1





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Witam,
mam tabelę w bazie MySQL 'owoce', zasilona jes danymi np:
jabłko polskie
jabłko włoskie
jabłko niemieckie

wyciągnięcie z bazy danych o owocach działa ok:
  1. SELECT * FROM owoce ORDER BY nazwa ASC

jednak w skrypcie mam jeszcze zmienne które są wykorzystwane w innych miejscach np:
$jp - jabłko polskie
$jw - jabłko włoskie
$jn - jabłko niemieckie

potrzebuję wyciągnąć z bazy wszystkie jabłka które spełniają swój warunek:

  1. if ($jp>0) { /*pokaż z bazy */ echo 'Jabłko polskie';}
  2. if ($jw>0) { /*pokaż z bazy */ echo 'Jabłko włoskie';}
  3. .....itd

dane wyświetlam w formie selcta


dziękuje za wszelkie porady.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
in5ane
post
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Wystarczy np. tak:
  1. SELECT * FROM owoce WHERE nazwa = 'jabłko polskie'
lub gdy nie wiesz dokładnie jakie znaki będą to bardziej rozbudowane z wykorzystaniem OR'a, np.:
  1. SELECT * FROM owoce WHERE nazwa = 'Jabłko polskie' OR nazwa = 'jabłko polskie'
Tych OR'ów możesz tutaj wsadzić kilka. Np. gdy nie wiesz czy będzie jabłko czy jablko to zrób
Kod
'jab%ko polskie'


Ten post edytował in5ane 10.07.2014, 00:46:18
Go to the top of the page
+Quote Post
krzesik
post
Post #3





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


zapytanie z warunkiem WHERE wiem jak napisać, chodzi mi o to że w skrypcie sprawdzam wcześniej inne zależności do tego celu wykożystuję zmienne np
$jp;
$jw;

i teraz mając już informację że np. $jp czyli jabłko polskie ma stan zerowy to nie chcę go pokazywać w select-ie. W bazie nie mam informacji o stanach jabłek, dlatego najpierw musze to wyliczyć.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




select name, count(name) from owoce group by name
To zapytanie zwroci ci ile masz danych owocow. Zapisz to sobie do tablicy czy do zmiennych - jak ci wygodniej - i bedziesz mial wszystko co ci potrzeba
Go to the top of the page
+Quote Post
krzesik
post
Post #5





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


kurczę jakoś tego nie widzę: select $jp, $jw from owoce ?

skąd zapytanie będzie wiedziało że $jw oznacza jabłko włoskie?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Podalem ci pelne, poprawne zapytanie.... Zapytania masz nie zmieniac.... Masz je wykonac w php i odebrac z niego wyniki, jak z kazdego innego zapytania. I wyniki te masz se zapisac gdzie chcesz
Go to the top of the page
+Quote Post
krzesik
post
Post #7





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


no to jednak się nie rozumiemy, pewnie napisałem niejasno.
mam tablicę owoce z polami: id_owoc | nazwa

1 | jabłko polskie
2 | jabłko włoskie
3 | jabłko niemieckie

wyciągnięcie nazwa z bazy - pestka
  1. SELECT * FROM owoce


w innej tabeli mam przychody i rozchody wyliczam sobie z niej czy dane jabłko ma dodatni stan magazynowy, na potrzeby tego wyliczenia poszczególne jabłka oznaczam zmiennymi:
$jp;
$jw;
$jn;

podczas wystawiania dokumentu, w tabelce obok pokazuję co można sprzedać (bo ma stan magazynowy dodatni), jednak chciałbym aby w liście pokazywać wyłącznie te jabłka które są na stanie.

na logikę powinienem zapytać:
  1.  
  2. SELECT * FROM owoce WHERE $jp>'0',........


ale tak mi nie zadziała
Go to the top of the page
+Quote Post
in5ane
post
Post #8





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Takich rzeczy nie robi się w PHP, tylko w zapytaniu. Podaj mi strukturę tej drugiej tabeli z przychodami i rozchodami, to napisze Ci całe zapytanie.

@edit: i podaj, jak liczysz te przychody i rozchody oraz stan magazynowy, bo może to coś bardziej skomplikowanego.

@edit: ewentualnie może coś takiego Ci pomoże, ale nie jestem pewny, czy to zadziała, musiałbym sprawdzić, bo nie pamiętam dokładnie warunków w SQL:
  1. SELECT
  2. *
  3. FROM
  4. owoce
  5. WHERE
  6. IF (' . $jp . ' > 0, nazwa, 0) = 'jabłko polskie'
  7. OR
  8. IF (' . $jw . ' > 0, nazwa, 0) = 'jabłko włoskie'
  9. OR
  10. IF (' . $jn . ' > 0, nazwa, 0) = 'jabłko niemieckie'
Od razu wstawiłem Ci zmienne do tego zapytania

Ten post edytował in5ane 10.07.2014, 08:33:15
Go to the top of the page
+Quote Post
krzesik
post
Post #9





Grupa: Zarejestrowani
Postów: 517
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


niestety wynik jest pusty, a warunki napewno są spełnione
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@insane z lekka przekombinowal
Jesli dany warunek jest spelniony, dodaj do where poprostu kolejny warunek i juz.
Podobny schemat budowania dynamicznie WHERE maszz opisany tutaj
http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html
tylko zamiast AND masz dac OR i po sprawie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 19:26