Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem SQL po raz kolejny
Forum PHP.pl > Forum > Bazy danych > MySQL
Deep_Blue
Witam serdecznie,

Na samym poczatku prosze o wyrozumialosc jesli ktos stwierdzi ze rozwiazanie problemu jest banalne, probowalem rozwiazac to na rozne sposoby niestety z mizernym efektem.. To tyle jesli chodzi o wstep - przejde teraz do opisania problemu..

W mojej bazie przechowuje dane w nastepujacej tabeli, wypelnilem ja danymi dla zilustrowania problemu

Kod
+----+-----------+---------+----------+-----------+----------+----------+----------+----------+
| id | niebieski | zielony | czerwony | fioletowy | sz_n     |  sz_z    |  sz_cz   | sz_f     |
+----+-----------+---------+----------+-----------+----------+----------+----------+----------+
| 5  |     0     |    1    |    0     |    0      |    1     |    0     |    0     |    0     |
+----+-----------+---------+----------+-----------+----------+----------+----------+----------+
| 6  |     1     |    0    |    0     |    0      |    0     |    1     |    1     |    0     |
+----+-----------+---------+----------+-----------+----------+----------+----------+----------+
| 7  |     0     |    0    |    1     |    0      |    1     |    1     |    0     |    1     |
+----+-----------+---------+----------+-----------+----------+----------+----------+----------+


formularz:
  1. Jestem niebieski <input name="niebieski" type="radio" value="1"><br \>
  2. Jestem zielony <input name="zielony" type="radio" value="1"><br \>
  3. Jestem czerwony <input name="czerwony" type="radio" value="1"><br \>
  4. Jestem fioletowy <input name="fioletowy" type="radio" value="1"><br \>
  5. <br \><br \>
  6. Szukam niebieskiego <input name="szukam_n" type="checkbox" value="1"><br \>
  7. Szukam zielonego <input name="szukam_z" type="checkbox" value="1"><br \>
  8. Szukam czerwonego <input name="szukam_cz" type="checkbox" value="1"><br \>
  9. Szukam fioletowego <input name="szukam_f" type="checkbox" value="1"><br \>


Chodzi o to aby znalezc pare, pary w bazie danych odpowiadajace preferencjom podanym w formularzu.. hmm wydaje mi sie, ze troche zakrecilem, ale mam nadzieje ze zrozumiecie o co mi chodzi.. aby zilustrowac sprawe podaje przyklad

Przyklad:
Jestem zielony (sz_z = 1) szukam niebieskiego (niebieski = 1) lub czerwonego (czerwony = 1) -> zapytanie powinno zwrocic wiersz 6 i 7, tylko jak sformulowac?? Prosze was o pomoc
nospor
dla sformulowania warunkow:
http://forum.php.pl/index.php?showtopic=36...=0&#entry204618

osobiscie nie rozumiem twego nazewnictwa pol. :
Jestem zielony (sz_z = 1)
szukam niebieskiego (niebieski = 1)

osobiscie uwazam, ze przedrostek sz_ sugeruje wlasnie szukam. A u ciebie jest na odwrót...
Aztech
Na początek powiem, że zrobiłeś nazwy bazy totalnie nieintuicyjne w stosunku do tego co przedstawia twój kod HTML, a konkretnie dlaczego szukam niebieskiego jest "niebieski", a niebieski jest "sz_niebieski"? Bezsensu, tyle offtopicu.

rozwiązanie problemu jest proste (według Twojego nazewnictwa z przykładu)

  1. SELECT *
  2. FROM nazwa_tabeli
  3. WHERE (niebieski=1 OR czerwony=1) AND (NOT sz_z=1)


Mała porada, nazwij pola formularza tak, jak masz nazwane pola w tabeli w bazie wtedy będziesz mógł zrobić coś takiego (kod w php), oczywiście musisz to sobie dostosować odpowiednio (tutaj masz tylko ideę)
  1. <?php
  2.  
  3. $sql = "SELECT * FROM nazwa_tabeli WHERE $$nazwa_zaznaczonego_inputa_w_html=$nazwa_
    zaznaczonego_inputa_w_html"
    ;
  4.  
  5. ?>

UWAGA (tak na wszelki wypadek):
  1. <?php
  2.  
  3. $$nazwa_zmiennej
  4.  
  5. ?>

zwróci Ci nazwę zmiennej a
  1. <?php
  2.  
  3. $nazwa_zmiennej
  4.  
  5. ?>

zwróci jej wartość
(zakładam, że to wiesz smile.gif ale tak na wszelki wypadek smile.gif
Deep_Blue
Cytat
osobiscie nie rozumiem twego nazewnictwa pol. :
Jestem zielony (sz_z = 1)
szukam niebieskiego (niebieski = 1)

osobiscie uwazam, ze przedrostek sz_ sugeruje wlasnie szukam. A u ciebie jest na odwrót...


Wiedzialem, ze troche zakrecilem.. ogolnie chodzi o to ze jesli ja jestem zielony i szukam niebieskiego badz czerwonego to:
wynikiem powinna byc osoba (osoby) poszukujaca zielonego, ktora sama jest niebieska badz czerwona..
Aztech
Po pierwsze primo: jeśli chcesz uzyskać pomoc, definiuj swój problem dokładnie, przeczytaj, pomyśl czy ktos inny zrozumie, masz opcje: podgląd oraz edytuj
Po drugie primo: to co napisałeś w opdowiedzi nijak się ma do tego co napisałeś w pierwszym poście.
Jeśli cię dobrze rozumiem chesz połączyć w pary osoby nazwajem się wyszukujące (zobrazuję to)
Mamy 6 osób:
[A] Andrzej
[B] Bogdan
[C] Czesław
[D] Daria
[E] Elwira
[F] Felicjana

Jeśli [A] szuka [D] i [E] oraz [D] szuka [A] oraz [B] to z tych warunków powinniśmy sparować [A] z [D] tak?
Deep_Blue
Cytat
Jeśli [A] szuka [D] i [E] oraz [D] szuka [A] oraz [B] to z tych warunków powinniśmy sparować [A] z [D] tak?


tak dokladnie o to mi chodzilo... przepraszam za niezbyt jasne wyrazenie sie, ale czasem pewne problemy ciezko ubrac w slowa..
Aztech
Tak jak napisałem, zmień nazwy checkboxów na nazwy kolumn z tabeli a potem zadawaj pytanie tak jak to zrobiłem post wyżej.

Poczytyaj o złączeniach tabeli JOIN, to ci pomoże znaleźć odpoweidź na twój problem.l Napisz jakiego MySQL-a uzywasz (jak piątki t omożesz użyć podzaoytań). Jak będę mial chwiilę czasu to podrzucę rozwiązanie z JOIN,

Zdrawim
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.