Forum Webscript.Ru
Общие => Базы данных => Тема начата: DartSidius от 26 Мая 2007, 05:00:32
-
Делаю выборку
SELECT news_mod.*,reg_users_mod.id as u_id,reg_users_mod.login as u_login FROM news_mod LEFT JOIN reg_users_mod ON news_mod.author=reg_users_mod.id
т.е. в таблице reg_users_mod находится id и совмещяется с author из news_mod
есть такая фишка что author может быть = 0...т.е. нету..тогда надо бырать что-то вроде reg_users_mod.anonymous=\'Y\'
и обязательно всё в одном запросе...можн как-нить такое сделать..видел что вроде есть if в sql но как то не получилось сделать
-
"И вы еще спрашиваете, а при чем здесь Perl?..."
База данных какая?
-
MySQL...перл ни при чём )
-
up
-
решил сам...если кому понадобится
SELECT a.*,ELT((b.login <=> NULL)+1,b.login,(SELECT login FROM reg_users_mod WHERE anonymous=\'Y\')) u_login
FROM `news_mod` as a
LEFT JOIN reg_users_mod as b ON a.author=b.id
WHERE 1
ORDER BY b.login ASC
-
DartSidius
Ужос... это Вы называете одним запросом? Я вижу 2 селекта как минимум, даже не считая того, что селект вложеный...
А вот так работает IF
SELECT t1.*, t2.*, IF(t1.author = 0, \'Y\', \'N\') AS anonimnus
FROM table1 t1 LEFT JOIN table2 t2 ON t1.author = t2.id;
-
всё равно у тебя немного не то...а иф тоже вариант возможен но всё равно прийдётся делать подзапрос...будет тогда так
SELECT a.*,if(b.login is NULL ,(SELECT login FROM reg_users_mod WHERE anonymous=\'Y\'),b.login) as u_login
FROM `news_mod` as a
LEFT JOIN reg_users_mod as b ON a.author=b.id
WHERE 1
ORDER BY u_login ASC
теж яйца только в профиль :)