Хм. У меня это не работает - ошибка запроса, про которую я уже говорил выше.
Вообще, задумалось вот что.
Нужно формировать список объектов с фото. До этого было 2 запроса - первый выбирал в массив все фото из второй таблицы, второй - данные по объекту из первой, результат собирался воедино и выводился на экран. Но в итоге скрипт получается в 2 раза медленнее, чем мог бы быть, если бы удалось получить эту выборку в одном запросе. Чего я и пытаюсь добиться, пока безуспешно.
И все же до конца не понял по Group By. Ведь если делаешь по какому-то полю выборки Group By, ко всем остальным надо применять какую-либо агрегатную функцию (count(), max(),...).
То есть Ваш пример выше не сработает для Oracle например.
Если все равно, какая именно запись попадет в результат, можно сделать:
SELECT table1.field1, table2.field2 FROM table1
LEFT JOIN table2 ON table1.key1 = table2.key2
GROUP BY table2.field2
(Думаю, идея ясна)
Черт, конечно! Спасибо! (Добавление)
Совсем обнаглею - а можно ли выбрать, например, именно первую запись из второй? В принципе, не особо нужно, но интересно...
Имеется вот такая связка таблиц (см. вложение). Одной записи в таблице building может соответствовать несколько в таблице building_photo.
Хочу сделать такой запрос - в результирующей выборке building.name, building_file.file_name, но значение building_file.file_name должно быть только одно (первое, например), тогда как в building_file их может быть несколько.
Например, если имеем: building id 1 name 'Торговый центр'
Добрый день и с Наступающим!
Вопрос у меня неконкретный, скорее теоретический вопрос.
Есть основная таблица, есть таблица-справочник. Есть промежуточная таблица, организующая связь "один ко многим" между справочником и основной. Таких пар (таблица-справочник и промежуточная таблица) несколько десятков.
В общем, с базами я работать учусь, хочу понять, как правильно организовать выборку - требуется вывести на странице все множественные значения справочника для одной записи из основной таблицы.
Как построить запрос - у меня есть 2 варианта:
1. Собственно связать таблицы в запросе и выбрать.
2. Сделать view, в котором связать таблицы и выбирать из него.
Может, можно еще как-то, но я пока об этом не знаю.
Интересует вопрос быстродействия и загрузки сервера. Я читал, что в веб-программировании за любой лишний запрос к базе следует бить по рукам.
А тут запросов, как ни крути - несколько десятков.
Как в данном случае поступить правильнее?
На сайте есть архив новостей. Хочу сделать такое - два селекта с годом и месяцем. При выборе года во второй селект выбираются все месяцы этого года, в которых были новости, и ниже - выбираются все новости в этот месяц и год. При выборе месяца - аналогично, выбираются все новости в этот месяц. Когда заходишь в архив - в списках последние ближайшие год и месяц, в которые были новости (например сейчас - 2009 и ноябрь).
Проблема в следующем - к примеру, новости начали заполняться с декабря 2005. Захожу на страницу - 2009, ноябрь. Выбираю 2005 - в списках устанавливается 2005 и декабрь, но сабмит формы проходит по 2005, ноябрь - и никакие новости не выбираются.
Туплю второй день - как бы поправить это дело?
if($result = $p_db->query ("select distinct month(r_date), decode(month(r_date),1,'январь',2,'февраль',3,'март',4,'апрель',5,'май',6,'июнь',7,'июль',8,'август',9,'сентябрь',10,'октябрь',11,'ноябрь',12,'декабрь') from news where year(r_date)=$year order by 1 asc"))
Polaris А если перекодировать уже сам текст к примеру с помощью iconv ?
То есть соединились с яндексом и считали в UTF-8 потом обработали данные потом их прогнали через перекодировщик и вывели в CP1251
Да я уже в принципе ручками все сделал, без XML DOM Все равно спасибо!
Надо сделать RSS для яндекса, а там одно из требований - чтобы кодировка в rss совпадала с основной кодировкой страниц сайта. Основная у меня windows-1251.
Помучился немного сам, потом почитал про XML DOM - он работает только с UTF-8.
А как лучше поступить, если результирующий файл должен быть в windows-1251?
Сейчас пока идея такая - php-шный скрипт для создания rss запускается кроном пару раз в сутки, делает xml в UTF-8, а потом в конце вызывается iconv и преобразовывает файл в windows-1251. Ну и отдельно заголовок xml придется преобразовать.
Насколько это правильно/оправданно? Может, есть более элегантное решение?