Гость
Map
Форумы / MySQL [закрыт для гостей] / Вопрос спецам по Mysql и PDO / 4 сообщений из 4, страница 1 из 1
04.06.2022, 23:47
    #56498
arhegavre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос спецам по Mysql и PDO
Короче, есть трабл.

есть табличка, shef_fishing, там храняться рыбаки, и скок они поймали рыбы.
допустим мне надо вытащить оттуда чувака с определенным ид, и узнать, на каком он месте в списке по весу улова. - поле shef_fishing.w

Прикол вот в чем, это мой код. Если его выполнить в консоли mysql или интерфейсе pma, - он работает. возвращает строки как положено
Но когда я выполняю этот запрос в коде (на php) через драйвер PDO - мне возвращается 0 строк, ошибок не возвращает.
Че делать, как чем PDO не понравился мой запрос, или где он решил порезать логику как то по своему? Или я по неопытности туплю?)))

п.с. За ковычки можете не писать, дело точно не в них.
п.с.с Если есть вариант более элегантного запроса - буду рад.
п.с.с.2 ид 5464 уже в запросе на прямую, а так там в коде плейсхолдер

спасиба
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @rank=0;
SELECT rank, firstname, w, c, i FROM
  (
    SELECT @rank:=@rank+1 as rank, firstname, w, c, i FROM
      (
        SELECT firstname, f.w w, f.fish c, f.id i
        FROM shef_fishing f INNER JOIN shef_persons p ON f.id = p.id ORDER BY w DESC
      ) as t1
  ) as t2
WHERE i = 5464 OR rank <= 2
ORDER BY rank
логика такая, беру обьедененую таблицу, соритрую по убыванию по весу, далее нумерую строки, т.е. тот у кого больше веса стоит на первом месте, далее беру 1,2 место и чувака с нужным ид.

f.w - вес
f.fish - число рыб
ид - ид))
...
arhegavre:
Пользователь запросил модераторские права на тему.
Изменено: 04.06.2022, 23:51 - arhegavre
Рейтинг: 0 / 0
05.06.2022, 00:07
    #56514
Sparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос спецам по Mysql и PDO
arhegavre  04.06.2022, 23:47
[игнорируется]
Короче, есть трабл.

есть табличка, shef_fishing, там храняться рыбаки, и скок они поймали рыбы.
допустим мне надо вытащить оттуда чувака с определенным ид, и узнать, на каком он месте в списке по весу улова. - поле shef_fishing.w

Прикол вот в чем, это мой код. Если его выполнить в консоли mysql или интерфейсе pma, - он работает. возвращает строки как положено
Но когда я выполняю этот запрос в коде (на php) через драйвер PDO - мне возвращается 0 строк, ошибок не возвращает.
Че делать, как чем PDO не понравился мой запрос, или где он решил порезать логику как то по своему? Или я по неопытности туплю?)))

п.с. За ковычки можете не писать, дело точно не в них.
п.с.с Если есть вариант более элегантного запроса - буду рад.
п.с.с.2 ид 5464 уже в запросе на прямую, а так там в коде плейсхолдер

спасиба
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @rank=0;
SELECT rank, firstname, w, c, i FROM
  (
    SELECT @rank:=@rank+1 as rank, firstname, w, c, i FROM
      (
        SELECT firstname, f.w w, f.fish c, f.id i
        FROM shef_fishing f INNER JOIN shef_persons p ON f.id = p.id ORDER BY w DESC
      ) as t1
  ) as t2
WHERE i = 5464 OR rank <= 2
ORDER BY rank
логика такая, беру обьедененую таблицу, соритрую по убыванию по весу, далее нумерую строки, т.е. тот у кого больше веса стоит на первом месте, далее беру 1,2 место и чувака с нужным ид.

f.w - вес
f.fish - число рыб
ид - ид))
Дай
Create table ....
Isert ....
C тестовыми данными ?
...
Рейтинг: 0 / 0
25.08.2022, 17:30
    #125841
Администратор
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос спецам по Mysql и PDO
Тема была перенесена из форума 'Просто Трёп'.
...
Администратор:
Тема была перенесена из форума 'Просто Трёп'.
Рейтинг: 0 / 0
01.09.2022, 14:32
    #133936
Redd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос спецам по Mysql и PDO
arhegavre  04.06.2022, 23:47
[игнорируется]
Короче, есть трабл.

есть табличка, shef_fishing, там храняться рыбаки, и скок они поймали рыбы.
допустим мне надо вытащить оттуда чувака с определенным ид, и узнать, на каком он месте в списке по весу улова. - поле shef_fishing.w

Прикол вот в чем, это мой код. Если его выполнить в консоли mysql или интерфейсе pma, - он работает. возвращает строки как положено
Но когда я выполняю этот запрос в коде (на php) через драйвер PDO - мне возвращается 0 строк, ошибок не возвращает.
Че делать, как чем PDO не понравился мой запрос, или где он решил порезать логику как то по своему? Или я по неопытности туплю?)))

п.с. За ковычки можете не писать, дело точно не в них.
п.с.с Если есть вариант более элегантного запроса - буду рад.
п.с.с.2 ид 5464 уже в запросе на прямую, а так там в коде плейсхолдер

спасиба
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @rank=0;
SELECT rank, firstname, w, c, i FROM
  (
    SELECT @rank:=@rank+1 as rank, firstname, w, c, i FROM
      (
        SELECT firstname, f.w w, f.fish c, f.id i
        FROM shef_fishing f INNER JOIN shef_persons p ON f.id = p.id ORDER BY w DESC
      ) as t1
  ) as t2
WHERE i = 5464 OR rank <= 2
ORDER BY rank
логика такая, беру обьедененую таблицу, соритрую по убыванию по весу, далее нумерую строки, т.е. тот у кого больше веса стоит на первом месте, далее беру 1,2 место и чувака с нужным ид.

f.w - вес
f.fish - число рыб
ид - ид))
Скорее всего проблема в двух запросах. Первый выполняет и все. Надо через транзакции идти в пхп. Или зашить все в процедуру, вьюху в бд.
Или в один запрос. Твой передел сократив немного.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
  rank, id
FROM
  (SELECT
    @rank := IF(@rank IS NULL, 0, @rank) + 1 AS rank, id
   FROM
    (SELECT f.id AS id FROM shef_fishing f INNER JOIN shef_persons p ON f.id = p.id ORDER BY f.w DESC) AS t1
  ) AS t2
WHERE
  t2.id=5464 OR t2.rank <=2
...
Рейтинг: 0 / 0
Форумы / MySQL [закрыт для гостей] / Вопрос спецам по Mysql и PDO / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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