Помогите с SQL запросом

123
[Удален]
#11

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

mff
На сайте с 21.02.2008
Offline
282
mff
#12
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) 😕

Управление репутацией в сети: https://timbook2.ru/
SI
На сайте с 19.12.2007
Offline
77
#13

ппц, ну как можно внешний ключ делать строковым, если он указывает на инт...

тогда проще (или тупее)

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

рисуем, верстаем, кодим и крутим ...аа, да, еще принимаем заказы (:
mff
На сайте с 21.02.2008
Offline
282
mff
#14
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'
:(
SI
На сайте с 19.12.2007
Offline
77
#15

ну ладно я ошибся, но не настолько же))

SELECT *,(SELECT title_rus FROM country WHERE country.id=base.country LIMIT 1) as country_title

FROM base WHERE base.id IN (SELECT id FROM base ORDER BY rating DESC LIMIT 20)

ORDER BY base.country

mff
На сайте с 21.02.2008
Offline
282
mff
#16
St.I.An:
ну ладно я ошибся, но не настолько же))

SELECT *,(SELECT title_rus FROM country WHERE country.id=base.country LIMIT 1) 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'

:(:(:(

[umka]
На сайте с 25.05.2008
Offline
456
#17

Имхо, чем громоздить кучу вложенных запросов, проще сделать один запрос

SELECT b.*, c.title_rus FROM base b, country c WHERE c.id=b.country ORDER BY b.rating LIMIT 20

+ сортировку на php

работать будет в сто раз быстрее

Лог в помощь!
SI
На сайте с 19.12.2007
Offline
77
#18

[umka] см сабж)

[umka]
На сайте с 25.05.2008
Offline
456
#19

St.I.An, ну на чистом SQL-е эту задачу можно решить только с LIMIT-ами во вложенных запросах, а они у товарища не работают.

Других путей я не вижу ) Да и то, такая коряга страшная получается! :D

SI
На сайте с 19.12.2007
Offline
77
#20

тсс... я сам так же делаю_)

насчет сортировки в пыхе

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий