powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите адаптировать запрос MS SQL под MySQL
11 сообщений из 11, страница 1 из 1
Помогите адаптировать запрос MS SQL под MySQL
    #32255673
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недавно перешёл на MySql, от которого сейчас буквально в
восторге. Немного только омрачает жизнь отличие в синтаксисе между MySql и MS Sql. Вот уже два дня никак не могу придумать запрос.
Есть следующие таблицы:
t1 c полями
NikId
NikName

t2 с полями
ItemId
Nik
Level

Таблица t1 связана один ко многим с таблицей t2: t1.NikId = t2.Nik

Нужно выбрать NikName и соответствующий ему ItemId c максимальным
Level.

На MS SQL у меня работал следующий запрос:

select NikName, (select top 1 ItemId from t2 where Nik = NikId order
by Level desc) from t1

На MySql этот запрос вываливается с сообщением об ошибке в синтаксисе.
А как изменить запрос, чтобы он прошёл - ума не приложу ;(
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256138
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну на счет в восторге - это ты сильно! Смотря какие задачи ставить!

В MySQL такие задачи решаются через временные таблицы.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TEMPORARY TABLE t3 (NikID INTEGER, Level INTEGER);

INSERT INTO t3 
SELECT t1.NikID, MAX(IFNULL(t2.Level, 0 ))
FROM t1 LEFT JOIN t1 ON t2.Nik=t1.NikID
GROUP BY t1.NikID;

SELECT t1.NikID, t1.NikName, t2.ItemID, t3.Level
FROM t1 LEFT JOIN t3 ON t3.NikID=t1.NikID, t2
WHERE
t2.Nik=t3.NikID
AND
t2.Level=t3.Level

mahoune
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256174
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
И правда, почитал форум, восторгов немного поубавилось ;)
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256269
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а че, having хуже временных таблиц? неявно создается временная таблица, и идет отбор...
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256462
slego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по моему, все гораздо проще - по идее, по идее должен сработать следующий запрос:

Код: plaintext
1.
2.
3.
SELECT MAX(level), itemId, nikname 
FROM t1, t2
WHERE nik = nikid
GROUP BY itemid, nikname


Или Я чего-то не понял :)
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256620
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только если так:

Код: plaintext
1.
2.
3.
4.
SELECT MAX(level), itemId, nikname 
FROM t1, t2
WHERE nik = nikid
GROUP BY MAX(level), itemid, nikname
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32256626
slego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да в общем-то с GROUP BY - это Я наврал :) Просто писал все это заполночь.
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32257143
New_Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, можно еще проще, без GROUP BY.

Код: plaintext
1.
2.
3.
4.
5.
SELECT ItemId, NickName
FROM t1, t2
WHERE t1.NikId = t2.Nik
ORDER BY t2.Level DESC
LIMIT  1 


Кстати и в MSSQL использование подзапросов для такого дела большое расточительство (разве что понадеятся на оптимизатор)
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32257174
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что ты получишь, только одну запись. А надо для каждого Nik получить запись! В общем решения дадены! Пользуйтесь!
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32258552
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! Почерпнул для себя новые приёмчики.
...
Рейтинг: 0 / 0
Помогите адаптировать запрос MS SQL под MySQL
    #32258662
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2fedd, а с HAVING ты как собирался построить?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите адаптировать запрос MS SQL под MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]