Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciągnąć rekord ID=1 lub ID=2 jeżeli ID=1 jest puste
Wave
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

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


Czy jest prostsza metoda niż:
  1. SELECT IFNULL(b.value, a.value) AS value
  2. FROM table1 AS a
  3. LEFT JOIN table1 AS b ON b.id=1 AND b.value != ""
  4. WHERE a.id=2
?

Jeżeli rekord o id=1 jest pusty to wyciągam rekord o id=2.

Zastosowanie:
Wyciąganie tłumaczeń tekstów (jeżeli nie mamy tekstu po polsku w bazie to wyciągamy angielską wersję).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Przy tak skonstruowanej tabeli nie ma, wydajność będzie zawsze problematyczna ze względu na dużą redundancję (dużo pustych pól gdy dla danego języka nie będzie tłumaczenia) oraz na fakt, że operujemy tylko na części tabeli (nie potrzebujemy wszystkich języków na raz). Jeśli robisz to w bazie to ja bym polecał tabelę podstawową z frazami po angielsku + dodatkowa tabela dla każdego innego języka dołączana left joinem w której będą znajdować się tylko przetłumaczone frazy, oczywiście to, którą tabelę dołączamy zależy od usera.
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: 11.10.2025 - 01:22