Сортировка многомерного массива

RomikChef

Guest
а вот это решение - идиотское.
ВООБЩЕ против всяких правил.
а если у него 1000 этих контестов?
 

ForJest

- свежая кровь
Я не знаю. Чет меня смущает. ВЕсь вопрос кто формирует сначала выборку - WHERE или LEFT JOIN. Я так думаю что сначала идет WHERE. Потом от этих записей идет LEFT JOIN.
Т.е. во where писать сравнения на поля из присоединяемой таблицы бесполезно - как ни ухищряйся - ниче не получится.
А мне это все пока интресно - заставляет мозги работать. Так что я решаю себе задачи на будущее :)
 

RomikChef

Guest
какая разница, что нужно сделать??
вариант предложенный с in - не годится в принципе!
 

ForJest

- свежая кровь
Почему? Ну прикинь что ты нажал на ссылку и попал в год... Хотя... Нда. Второй запрос нужен просто left join без указания года и те c.ID которых не попали в первую выборку. Во. Наверное это то что нужно.
 

RomikChef

Guest
да зачем вообще завязываться на id???
запрос с лефт джойном.
 

RomikChef

Guest
ForJest мы с тобой дураки.
смотри описание таблиц.

SELECT c.* r.* FROM contests c
LEFT JOIN resultados r ON c.contestId = r.contestId
WHERE (YEAR(r.contestDate) = $DateYear)
OR (r.contestDate)='0000-00-00')
ORDER BY r.contestDate
 

ForJest

- свежая кровь
2 RomikChef:
Я не знаю. Продолжение завтра видать :)
Он подумает и расскажет что ему было нужно на самом деле. А заодно может найдет сам подходящее решение. Я так и не понял что он хочет и как выбрать. Уперся в свои массивы и все.
 

ForJest

- свежая кровь
SELECT c.* r.* FROM contests c
LEFT JOIN resultados r ON c.contestId = r.contestId
WHERE (YEAR(r.contestDate) = $DateYear)
OR (r.contestDate)='0000-00-00')
ORDER BY r.contestDate
Ну это если они там вообще есть 0000-00-00.
А если есть - то left join не нужен. Если есть не для всех - то нафиг они тогда нужны для только некоторых. %)
 

Semen

Семён
Добрый день снова!
читал все ваши сообщения, спаибо за попытку помочь!

я может быть плохо обьясняю но суть того, что я хочу, проста:
из первой таблицы надо выбрать всё ряды(независимо есть во второй таблице contestDate для contestId из первой или нет)
с условиям DateYear

и потом вывести всё это в порядке даты(без даты выводятся в конце)

похоже надо делать простой запрос
SELECT c.*, r.contestDate FROM contests c LEFT JOIN resultados r ON c.contestId = r.contestId ORDER BY r.contestDate
и потом проверять contestDate на условия

Спасибо в любом случае за ответы!
 

ForJest

- свежая кровь
Ну наконец то.
Проблемы следующие:
из второй таблицы надо выбирать
WHERE(contestDate LIKE "%'.$DateYear.'%")
Тут ты нас с Ромиком и поймал %). Поучи чуть-чуть SQL - очень мощная штука, правда думать нужно по другому - не массивами, а выборками.
Если тебе допустим по определенному году что-то сделать нужно - ну там подсветить или ссылки сделать - это делается на клиенте.
Сортировки и выборки лучше писать на SQL - он для этого как нельзя удобнее предназначен.
 
Сверху