Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SELECT z nietypowym warunkiem
zkwc
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 6.03.2013

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


Witam Wszystkich,
Poszukuję najprostszego rozwiązania do poniższego problemu:
Z poniższej tabeli potrzebuję pobrać rekordy dla wszystkich zamówień (ord) gdzie typ = 'wysylka' (gdy 'wysylka' nie występuje należy pobrać rekord dla 'billing')

lp ord typ miasto
1 1 billing wroclaw
2 2 billing krakow
3 3 billing warszawa
4 3 wysylka lodz
5 4 billing poznan
6 5 billing krakow
7 5 wysylka katowice

Tabela wyjściowa powinna wyglądać następująco:

lp ord typ miasto
1 1 billing wroclaw
2 2 billing krakow
4 3 wysylka lodz
5 4 billing poznan
7 5 wysylka katowice

Z góry dzięki.
Pozdrawiam,
zkwc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lexis72
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 25.02.2013

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


Ok bo faktycznie user_name nie ma w bazie wyniki tylko jest user_id a user_name jest w bazie users. Poprawilem zatem zapytanie bpskiby na:

  1. (SELECT w.user_name,IFNULL(u.user_id,'brak') FROM ".DB_WYNIKI." u LEFT JOIN ".DB_USERS." w USING(user_id) WHERE warunek=1 AND grupa_id=t1.grupa_id) AS abc


I tez wyskakuje
"Operand should contain 1 column(s)"

Sazian co robie zle skoro te zapytanie moze zwracac tylko 1 wynik, przy tych kryteriach nie moze byc w bazie wiecej wynikow. Wiec albo ten wynik jest wtedy powinno go wyswietlic albo go nie ma wiec wtedy chcialbym zeby wyswietlalo jakis zamienny tekst. Nie rozumiem jakie sa 2 kolumny? W tabelii kolumn jest wiele ale te zapytanie tyczy sie tylko jednej....

Tutaj musi byc cos nie tak z zapytaniem bo nawet jesli robie zapytanie dotyczace jednej kolumny to jakie where bym nie podal zawsze wyskakuje ten sam blad. Np podaje kryterium dla id wyniku=20 gdzie jest takie w bazie i powinno go wyswietlic to i tak wyskakuje blad. Podaje wynik_id=100 gdzie nie ma takiego wyniku i powinno wyswietlic zamienny tekst to tez ten sam blad...

  1. (SELECT wynik, IFNULL(wynik,'brak') FROM ".DB_WYNIKI." WHERE wynik_id=20) AS zxc




Jak dla mnie poprawnie zrobione jest te zapytanie:
  1. (SELECT IFNULL(wynik,'brak') FROM ".DB_WYNIKI." WHERE warunek=1 AND grupa_id=t1.grupa_id) AS zxc


Tylko ze ono zachowuje sie jak zwykle zapytanie bez IFNULL czyli jesli wynik o podanych kryteriach znajduje sie w bazie to go zwraca a jesli nie ma takiego rekordu w bazie to nic nie wyswietla a chce zeby wyswietlalo tekst BRAK ;/

Ten post edytował lexis72 10.03.2013, 23:23:52
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 01:53