Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciągnąć rekord ID=1 lub ID=2 jeżeli ID=1 jest puste
Wave
post 1.12.2010, 23:22:12
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
adk11
post 3.12.2010, 13:10:15
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.12.2010

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


Ja bym widział inaczej zbudowaną te tabelę.

CREATE TABLE `table1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`VALUE` text,
`PARAM` text,
`LANG` enum('pl','en') DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

ID VALUE PARAM LANG
1 null window pl
2 window window en

wtedy szukając jakiegoś słówka używamy

SELECT IFNULL(a.`VALUE`, b.`VALUE`) AS value
FROM table1 AS a
LEFT JOIN table1 AS b ON a.`PARAM`=b.`PARAM`
WHERE a.`LANG`='pl' and b.`LANG` = 'en' and b.`PARAM`='window'

dużo można wymyślać ale to zależy od wielu czynników.


btw. zmieniłeś zapytanie dry.gif
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 17:47