![]() |
![]() |
--void-- |
![]()
Post
#1
|
Goście ![]() |
Witam.
Mam taki problem z optymalizacją zapytania. Moja struktura bazy schematycznie wygląda tak: produkty (id auto increment, describe_short - typ int, name_short - typ int, describe_long - typ int, jeszcze jakieś nieistotne pola...) describe_varchar (id - typ int, describe - typ varchar(30) ) describe_text (id - typ int, describe - typ text) W tabeli `produkty` przechowuję tylko liczby (takie jest założenie). Kolumna describe_short przechowuje liczbę, pod którą w tabeli describe_varchar można znaleźć krótki opis produktu (maksymalnie 30 znaków). Kolumna name_short również przechowuje klucz obcy dla tej tabeli, jednak nieco inne jest jej zastosowanie (nie jest to istotne). Tabele describe_varchar i describe_text składają się z zestawów id-ciąg tekstowy, w przypadku describe_varchar jest to 30 znaków, w przypadku describe_text - dłuższe teksty. Chciałbym jednym zapytaniem pobrać wszystkie opisy wszystkich produktów (czyli pobrać dla każdego produktu jego krótki opis, nazwę (pole name_short) oraz dłuższy opis. Nie chcę zmieniać struktury bazy, bo to co przedstawiłem to nie cała aplikacja i zmiana struktury miałaby znacznie poważniejsze konsekwencje. Napisałem taki kod:
Ale chciałbym, żeby już mysql_fetch_row bądź mysql_fetch_array zwracało poprawną tablicę. Przy tak sformułowanym zapytaniu wyników w tabeli $array['descLong'] mam 2 razy za dużo (po 2 razy te same), co jest zresztą logiczne, patrząc na warunki - (coś1 OR coś2) AND coś3 powoduje że coś3 występuje dwukrotnie więcej niż powinno. Może jakiś inny sposób łączenia tabel? Nie widzi mi się sprawdzanie reszty z dzielenia iteratora przez 2, jak w powyższym przykładzie ![]() Mam nadzieję że dobrze opisałem problem i że nie jest on zbyt trudny dla Was... Z góry dzięki za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 10:10 |