Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка данных

Сообщения:  [1-10]   [11-17] 

 
 автор: mihdan   (23.03.2009 в 18:47)   письмо автору
 
   для: Trianon   (23.03.2009 в 17:58)
 

5+

Спасибо

  Ответить  
 
 автор: Trianon   (23.03.2009 в 17:58)   письмо автору
 
   для: mihdan   (23.03.2009 в 17:37)
 

ON LOCATE(CONCAT('-', themes.id, '-'), news.theme_id)

  Ответить  
 
 автор: mihdan   (23.03.2009 в 17:37)   письмо автору
 
   для: Trianon   (23.03.2009 в 17:20)
 

>Вам даже в голову не пришло объяснить, что за числа хранятся в этом списке. Я тем более гадать не буду.

theme_id - поле хранит идентификаторы тем из таблицы themes

>Вам придется придумать выражение, которое вычисляется как истина, когда строка одной таблицы соответствует строке другой, и как ложь, когда не соответствует. И поставить его в раздел ON соединения таблиц.

В это-то и проблема, поэтому и обращаюсь постоянно к вам (гуру sql) за помощью

  Ответить  
 
 автор: Trianon   (23.03.2009 в 17:20)   письмо автору
 
   для: mihdan   (23.03.2009 в 17:16)
 

>ЗЫ: и все-таки хотелось бы узнать, возможно ли было сделать все это безе переделки структуры базы?

Вам даже в голову не пришло объяснить, что за числа хранятся в этом списке.
Я тем более гадать не буду.
Одно могу сказать - Вам придется придумать выражение, которое вычисляется как истина, когда строка одной таблицы соответствует строке другой, и как ложь, когда не соответствует. И поставить его в раздел ON соединения таблиц.

  Ответить  
 
 автор: mihdan   (23.03.2009 в 17:16)   письмо автору
 
   для: Trianon   (23.03.2009 в 16:50)
 

Отмазок нет.
Переделал так, добавив таблицу связи

news_to_theme

id | id_new | id_theme


Проект пришел на доработку, полную переделку осуществить нет возможности из-за отсутствия времени и капитала.

ЗЫ: и все-таки хотелось бы узнать, возможно ли было сделать все это безе переделки структуры базы? Например, через LIKE

  Ответить  
 
 автор: Trianon   (23.03.2009 в 16:50)   письмо автору
 
   для: mihdan   (23.03.2009 в 16:20)
 

>>В любом случае хранить ключи списком в поле - неправильно.
>так уж спроектировали базу в 1997 году ;(

Что ж Вы её до сих пор не переделали? :)

Основы реляционной теории БД были спроектированы Е. Коддом в 1970 году.
Так что за отмазку не канает причина не выдерживает критики.

  Ответить  
 
 автор: mihdan   (23.03.2009 в 16:20)   письмо автору
 
   для: Trianon   (23.03.2009 в 15:27)
 

themes.id и в news.theme_id разные:
themes.id - int
news.theme_id - varchar

>В любом случае хранить ключи списком в поле - неправильно.
так уж спроектировали базу в 1997 году ;(

  Ответить  
 
 автор: Trianon   (23.03.2009 в 15:27)   письмо автору
 
   для: mihdan   (23.03.2009 в 14:55)
 

ну и кто ССЗБ?

Собственно, если в themes.id и в news.theme_id хранятся одни и те же значения (будь они сами по себе хоть фиолетовыми в крапинку) код будет работать.

Если же значения разные - Вы не имели права формулировать задачу так, как написали в исходном посте.

В любом случае хранить ключи списком в поле - неправильно.

  Ответить  
 
 автор: mihdan   (23.03.2009 в 14:55)   письмо автору
 
   для: Trianon   (23.03.2009 в 11:33)
 

Как всегда на высоте. Только есть одна проблема: поле theme_id - varchar(50) и данные в нем вида


-10--11--3-


То есть в нем хранятся несколько ID каждое из которых обрамлено в "-"

  Ответить  
 
 автор: Trianon   (23.03.2009 в 11:33)   письмо автору
 
   для: mihdan   (19.03.2009 в 14:04)
 

SELECT t.*, MAX(n.`date`) AS md  
  FROM theme t
    LEFT JOIN news n ON t.id = n.theme_id
  GROUP BY t.id,
  ORDER BY t.sort DESC,
  `md` DESC;

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования