@mysql_ru

Страница 54 из 142
Egor
08.08.2017
20:45:35
Вооо

Удалило

Теперь можно смело удалять спам-сообщения :)

Google
Andrey
08.08.2017
21:15:53
Не, Егор: надо три три разных сообщения

Egor
08.08.2017
21:17:46
Ок

отвечать?

Понял. Такого пока не было.

Danil
09.08.2017
09:31:03
всем добрый. пытаюсь сделать селект из таблицы со вложенным селектом из этой же или другой таблицы в mysql через phpmyadmin и получаю error #2014 - commands out of sync. по отдельности запросы работают корректно.

как можно прбедить?

SELECT StencilNo , Tension1 , Tension2 , Tension3 , Tension4 , Tension5 , sum( useCount ) FROM stencil_history WHERE StencilNo = (SELECT StencilNo FROM `view_stencil_list_in_use`) ORDER BY id DESC LIMIT 1

есть кто живой?

Dmitriy
09.08.2017
09:35:41
есть живые)

C.5.2.14. Commands out of sync If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order. This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result(). It can also happen if you try to execute two queries that return data without calling mysql_use_result() or mysql_store_result() in between.

Danil
09.08.2017
09:37:45
ну я находил такое да. получается грабли самого phpmyadmin?

как это проверить?

Google
Dmitriy
09.08.2017
09:38:02
в консоли запрос выполнить

или клиентом подцепиться

какойнить heidisql

Danil
09.08.2017
09:39:09
ну у меня есть доступ к консоли сервера - ща буду как то пробовать. но это очень странно все ((

Dmitriy
09.08.2017
09:39:36
если в консоли сложно, какой-нибудь гуевой прогой зацепись

если пускает только с localhost можно ssh тунель замутить к серверу :)

Danil
09.08.2017
09:41:32
попробовал впихнуть запрос во вьюшку - выдало ошибку №1242 - Subquery returns more than 1 row

какого фига? это же нормально для SQL!?

lost
09.08.2017
09:42:46
это не нормально для sql.

Dmitriy
09.08.2017
09:43:22
limit 1

в подзапросе

если нужно сравнивать вхождение в множество, то вместо = использу конструкцию IN

lost
09.08.2017
09:44:29
а лучше сделать join

Dmitriy
09.08.2017
09:44:43
чем лучше?

Danil
09.08.2017
09:45:12
лимит 1 сделал -вернуло результат

Dmitriy
09.08.2017
09:46:17
чудеса)

lost
09.08.2017
09:46:24
выполняется быстрее есть негласное правило: если можно сделать через join - сделай через join

Danil
09.08.2017
09:46:30
короче подзапрос выдает список уникальных значений для одного поля и мне нужно получить последнюю запись для каждого значения из списка из другой таблицы

Dmitriy
09.08.2017
09:46:55
делай сортировку DESC и лимитируй

по какому полю понимаешь, что значение последнее?

Google
Danil
09.08.2017
09:48:01
я бы сделал джоин если бы знал как получить таблицу в которой будут последние записи для каждого уникального значения поля 'StencilNo'

последняя запись находится по id

Dmitriy
09.08.2017
09:48:48
тогда ORDER BY id DESC LIMIT 1 в подзапросе

Danil
09.08.2017
09:48:50
SELECT StencilNo , Tension1 , Tension2 , Tension3 , Tension4 , Tension5 , sum( useCount ) FROM stencil_history WHERE StencilNo = 'XXXXXXXXXXXX' ORDER BY id DESC LIMIT 1

Dmitriy
09.08.2017
09:48:57
и индексы проставь

если нету

Danil
09.08.2017
09:49:23
так возвращает для записи 'XXXXXXX'

Dmitriy
09.08.2017
09:49:35
ну подзапрос нормальная вещь

версия какая мускула?

Danil
09.08.2017
09:49:53
а мне надо такой вывод для списка этих 'XXXXXXXX'

Dmitriy
09.08.2017
09:50:27
подзапрос

тебе для каждой нужно?

Danil
09.08.2017
09:50:49
mysql Ver 14.14 Distrib 5.5.50, for debian-linux-gnu (x86_64) using readline 6.3

Dmitriy
09.08.2017
09:51:07
5.5 старенькая, но подзапросы там уже в нормальном виде

Danil
09.08.2017
09:51:21
да, для каждойю и вот список этих ХХХХХХ получаю из подзапроса

Alexey
09.08.2017
09:51:37
плохо всё в 5.5 с подзапросами

Danil
09.08.2017
09:51:43
в отдельности все работает, и если лимит 1 в подзапросе тоже ок

Dmitriy
09.08.2017
09:51:46
лучше, чем в 5.1)

Alexey
09.08.2017
09:51:58
нет

Dmitriy
09.08.2017
09:52:02
в отдельности все работает, и если лимит 1 в подзапросе тоже ок
если для многих записей, то джойнить проще

Google
Dmitriy
09.08.2017
09:52:11
нет
хотя бы лимиты работают

lost
09.08.2017
09:52:31
подзапрос оправдан, когда у тебя нет индекса для join

Danil
09.08.2017
09:52:36
для джойна нужно 2 таблицы которые пересекаются по какому либо полю

Danil
09.08.2017
09:52:48
а у меня получается вернуть тольког 1 запись

Dmitriy
09.08.2017
09:53:01
ты сам себе противоречишь)

Вдумайся в то, что хочешь получить

Danil
09.08.2017
09:53:18
причем только если я жостко задаю искомое значение поля. и че мне джойнит тогда?

ок. объясню еще раз. есть 2 исходные таблицы в базе. в каждой таблице есть записи с ключевым полем 'StencilNo'. из первой таблицы я выбираю все записи по определенному условию и получаю таблицу №1.

из второй таблицы мне нужно получить последние записи для каждого уникального 'StencilNo' из таблицы №1 и сумму по определенному полю для всех записей с данным 'StencilNo' - это будет таблица №2

ивот эти уже 2 таблицы мне надо объединить

и вот главная проблема с таблицей №2

я могу получить только по 1й записи для конкретного "StencilNo' и не могу использовать для этого подзапрос который возвращает список - ВТФ?

lost
09.08.2017
09:58:48
потому что значение строки из первой таблицы не равно списку из второй

Danil
09.08.2017
09:58:48
или я ем кактус не той стороной?

lost
09.08.2017
09:59:16
если у тебя условие равенства то подзапрос должен возвращать 1 значение, выше писали про IN

Danil
09.08.2017
09:59:22

Страница 54 из 142