mff

mff
Рейтинг
282
Регистрация
21.02.2008
Должность
Системный администратор, верстальщик
Интересы
Вайшнавизм
Управление репутацией в сети: timbook2.ru
St.I.An:
ппц, ну как можно внешний ключ делать строковым, если он указывает на инт...
тогда проще (или тупее)

SELECT *,(SELECT title_rus FROM country WHERE country.id=base.country) as country_title
FROM base WHERE base.id IN (SELECT id FROM base ORDER BY rating DESC LIMIT 20)
ORDER BY base.country

Ответ MySQL:


#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
:(
St.I.An:
SELECT base.*,countries.name
FROM base LEFT JOIN countries ON (base.id_country=countries.id)
WHERE base.id IN (SELECT id FROM base WHERE show=1 ORDER BY rating DESC LIMIT 20)
ORDER BY base.id_country

Спасибо но

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
:(

mff добавил 25.12.2009 в 19:06

MOP1:
CREATE TEMPORARY TABLE `base_tmp` SELECT * FROM base WHERE show=1 ORDER BY rating DESC LIMIT 20;

SELECT base_tmp.*, countries.name
FROM base_tmp
LEFT JOIN countries ON (base_tmp.id_country=countries.id)
ORDER BY base_tmp.id_country

Спасибо. Выбрало но сортировка не правильно работает. :(

MOP1:
может выложите структуру бд ;) чтобы мы не гадали тут

есть табличка:

CREATE TABLE `base` (

`id` int(10) unsigned NOT NULL auto_increment,
`channel` char(255) NOT NULL,
`country` char(255) NOT NULL,
`rating` int(10) NOT NULL,
`views` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

(1, 'Детский мир', '1', '0', '154' '1'),
(1, 'Детский мир2', '3', '0', '154' '6'),
(1, 'Детский мир3', '1', '0', '154' '12'),
(1, 'Детский мир4', '2', '0', '154' '77'),
(1, 'Детский мир5', '2', '0', '154' '1');

и

CREATE TABLE `country` (

`id` int(10) unsigned NOT NULL auto_increment,
`title_rus` char(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

(1, 'Албания'),
(2, 'Эстония'),
(3, 'Япония');

Задача та же, из базы base выбрать 20 строчек с наибольшим рейтингом(rating) и полученное отсортировать по стане(title_rus) 😕

Tempter ага, все равно по рейтингу сортировка :(

Tempter спасибо, вот прописал, но сортирует не по стране выбранное, а по рейтингу.

SELECT * FROM country as country

LEFT JOIN base_ as base_ ON base_.country = country.id
WHERE base_.show = 1
ORDER BY base_.rating DESC
LIMIT 20

country - табличка со странами, в ней id (он равен id_channel из таблички base_) и title название страны

base_ - табличка с каналами, в ней же рейтинг, id стран и show

Нужно, чтобы сначало запрос отбирал из таблички base_ 20 записей с наибольшим рейтингом, а потом полученный результат отсортировать по названию страны (title) в алфавитном порядке

Ага, выяснил, страны оказалось хранятся в другой табличке :( А в этой только номера (id) стран. Как же быть?

T.R.O.N:
это, вообще-то ВЕРТИКАЛЬНАЯ координата. =))))

T.R.O.N, ага :)

Заработался :)

T.R.O.N:
offsetTop

Сейчас попробую 🤪

Ураааааааааааааааааааа!

0 -> 10

0 -> 10

0 -> 0

20 -> 30

Hencon, установите любой ftp клиент (Total Commander например), после покупки хостинга, вам выслали на email пароли доступа от ftp. Введите ip адрес, порт, логин и пароль в ftp клиенте и подключитесь. Далее закидывайте ваш сайт на хостинг. Домен обычно дают бесплатно, при покупке хостинга, если нет, то в центральной панели управления хостингом, закажите или перенесите свой домен. Пропишите его. Далее нужно написать в суппорт вашего регистратора (если в панели управления, у регистратора домена нет возможности прописать NS сервера самому) и попросить делегировать домен на NS сервера хостера (их можно посмотреть в центральной панели управления, у хостера).

Faster спасибо большое, вот так работает:

$result = mysql_query("select count(id_channel), `id_channel` from `table` group by `id_channel` order by 1 desc limit 1"); 
Faster:
ТС в табличке сколько записей?

Каждый день + 2000-3000 записей

P.S. Будьте удачливы.

+550 страниц в индексе.

Всего: 2495