Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze sformuowaniem pytania do bazy...
Forum PHP.pl > Forum > Bazy danych > MySQL
remik86
Witam,
Mam problem z pytaniem do bazy, mianowicie:
Mam dwie tabele: zdarzenia i zdarzenia_opis. Do tabeli zdarzenia wpisywane są logi z pracy urządzenia, tabela wygląda następująco (prezentuje tylko kilka wpisów z kilku tysiecy):
Whenl; Type; Code;
2010-07-05 09:12:30; A; 82-02-00;
2010-09-23 13:35:04; A; 37-20-00;

Do tabeli zdarzenia_opis wpisałem opis tych zdarzen:
Type; Code; Text;
A; 82-00-00; Opis błędu 82-00-00;
A; 82-01-00; Opis błędu 82-01-00;
A; 82-02-00; Opis błędu 82-02-00;
A; 82-03-00; Opis błędu 82-03-00;
A; 37; Opis błędu 37-xx-xx

Do bazy zadaje pytanie:
SELECT a.Whenl, a.Code, b.Text FROM zdarzenia a, zdarzenia_opis b where (a.Type = b.Type) and (b.Code = (a.Code+'*'))

Otrzymuje wynik:
2010-07-05 09:12:30; A; 82-00-00; Opis błędu 82-00-00;
2010-07-05 09:12:30; A; 82-00-00; Opis błędu 82-01-00;
2010-07-05 09:12:30; A; 82-00-00; Opis błędu 82-02-00;
2010-07-05 09:12:30; A; 82-00-00; Opis błędu 82-03-00;
2010-09-23 13:35:04; A; 37-20-00; Opis błędu 37-xx-xx

W tabeli zdarzenia_opis błąd 37 składa się tylko z dwóch cyfr ponieważ reszta to parametry tego błędu.
Jak zadać to pytanie żeby dla błędu 82-00-00 znajdował się tylko prawidłowy opis a jednocześnie znajdował się opis dla błędu 37. Kombinowałem różnymi sposobami z like itp. Ale nigdy to nie działało tak jak powinno.

Może ktoś potrafi mi pomóc, jeżeli coś nie jasno opisałem proszę napisać a postaram się wyjaśnić.
Pozdrawiam i z góry dziękuje
pogdan
"Jak zadać to pytanie żeby dla błędu 82-00-00 znajdował się tylko prawidłowy opis a jednocześnie znajdował się opis dla błędu 37."

A coś takiego ?

SELECT a.Whenl, a.Code, b.Text FROM zdarzenia a, zdarzenia_opis b where a.Type = b.Type
and ( a.Code = '82-00-00' or substr(a.Code, 1,2)='37' )

poz
remik86
Cytat(pogdan @ 6.10.2010, 20:45:23 ) *
"Jak zadać to pytanie żeby dla błędu 82-00-00 znajdował się tylko prawidłowy opis a jednocześnie znajdował się opis dla błędu 37."

A coś takiego ?

SELECT a.Whenl, a.Code, b.Text FROM zdarzenia a, zdarzenia_opis b where a.Type = b.Type
and ( a.Code = '82-00-00' or substr(a.Code, 1,2)='37' )

poz


Tak tylko że kodów jest w bazie ponad sto, a te to tylko przykładowe, wiec pytanie nie może być wpisane na "sztywno", tylko uniwersalnie dla wszystkich kodów...
pogdan
To skoro nie tak to wg mnie pytanie "Jak zadać to pytanie żeby dla błędu 82-00-00 znajdował się tylko prawidłowy opis a jednocześnie znajdował się opis dla błędu 37." Jest złym pytaniem.




remik86
Cytat(pogdan @ 7.10.2010, 10:04:01 ) *
To skoro nie tak to wg mnie pytanie "Jak zadać to pytanie żeby dla błędu 82-00-00 znajdował się tylko prawidłowy opis a jednocześnie znajdował się opis dla błędu 37." Jest złym pytaniem.


Racja, nie jasno się wyraziłem...
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.