Помогите найти ошибку в SQL

Anton

Just Programmer
Помогите найти ошибку в SQL

Добрый день, всем! :)

Помогите пожалуйсто найти ошибку в SQL запросе для MYSQL.

Есть три таблицы:

goods - список товаров
goods_sections - группы товаров
users - список пользователей

Необходимо выбрать список товаров принадлежащий определенной группе товаров, причем надо выбрать кака товары к которым прикреплены ползователи так и товары к которым пользователи не прикреплены. Сортировать надо сперва по фамилии пользователя, потом по названию товара, но если у товара нет пользвоателя, то сразу по имени товара так что бы эти названия сортировались между именами авторов, причем сперва дилжны в сортировки идти те, что на русском языке, а помтом уже то что на аглецком ...

Соответсвенно пишу:

SELECT
gs.good_id id,
g.name name,
g.organization organization,
g.city city,
g.author author,
g.author2 author2,
g.description description,
gs.sort

FROM
goods_sections gs,
goods g

LEFT JOIN
users ON (users.user_id=g.author)

WHERE
gs.section_id=3 AND
gs.good_id=g.good_id

ORDER BY
if(ord(LTRIM(users.user_surname))<123, '2', '1'),
BINARY IFNULL(CONCAT(users.user_surname, users.user_name, users.user_sname), g.name),
BINARY g.name

LIMIT 0, 20

При исполнение запроса у меня падает MYSQL ... :-(
Вобщем кто из нас с ним дурак??? :)) Я или он, и если дурак то почему?:))

Всем заранее спасибо.
 

Кром

Новичок
Абсолютно точно по твоей проблеме сказать нельзя, нет дампа и версии mysql.
Телепатить не буду.
Если у тебя стоит 3.23.x или в этом районе, на Linux, то обнови mysql. По идее, mysql спотыкается на следующей связке: функция binary + left join + значение NULL в users.
 

.des.

Поставил пиво кому надо ;-)
это баг. В версиях mysql до 3.23.53 binary cast on a null values caused core dump.
 

Anton

Just Programmer
Понял, спасибо :))) Дейсвтительно это у него (3.23 + Win) была такая забавна реакция на binary + left join + значение NULL.


Разобрался, спасибо. :)
 

Anton

Just Programmer
Ой, у меня по ходу дела возникла еще одна проблема с этим запросом:).

Там идет сортировка по имени пользователя, а затем по названию товара, все хорошо, но название товара иногда начинаеться с кавычек, многоточия, кавычек и многоточия, квадратной скобки, но сортировать надо без учета этих знаков в начале названия тоесть только по буквам.

Например названия:

1. «...Не для богатства, а для Бога»
2. [Благотворительность в деятельности земских и городских органов самоуправления]
3. "Благотворительность и общественное призрение"

Надо сортирвать как:
1. Не для богатства, а для Бога
2. Благотворительность в деятельности земских и городских органов самоуправления
3. Благотворительность и общественное призрение

Вот как бы это сделать в запросе??? Если бы мог быть только один символ пере буквами, то понятно, а вот кака сделать когда их несколько???
 

Crazy

Developer
Автор оригинала: Anton
Там идет сортировка по имени пользователя, а затем по названию товара, все хорошо, но название товара иногда начинаеться с кавычек, многоточия, кавычек и многоточия, квадратной скобки, но сортировать надо без учета этих знаков в начале названия тоесть только по буквам.
Ответ прост: завести отдельное -- прочищенное от мусора -- поле исключительно для сортировки.
 

Anton

Just Programmer
Походе так и придеться делать. :-((

Спасибо за совет, Crazy. :)
 
Сверху