PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (3): « 1 [2] 3 »

> Найдено сообщений: 40
Polaris Отправлено: 22 Января, 2010 - 17:54:03 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
Хм. У меня это не работает - ошибка запроса, про которую я уже говорил выше.

Вообще, задумалось вот что.
Нужно формировать список объектов с фото. До этого было 2 запроса - первый выбирал в массив все фото из второй таблицы, второй - данные по объекту из первой, результат собирался воедино и выводился на экран. Но в итоге скрипт получается в 2 раза медленнее, чем мог бы быть, если бы удалось получить эту выборку в одном запросе. Чего я и пытаюсь добиться, пока безуспешно.
Polaris Отправлено: 22 Января, 2010 - 14:07:34 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
Попробовал - получил ошибку, что все выбираемые поля должны быть в group by. Но тогда смысл составления такого запроса теряется.

Цитата:
The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns.


Либо я неправильно понимаю логический смысл group by.
Polaris Отправлено: 22 Января, 2010 - 13:53:21 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
И все же до конца не понял по Group By. Ведь если делаешь по какому-то полю выборки Group By, ко всем остальным надо применять какую-либо агрегатную функцию (count(), max(),...).
То есть Ваш пример выше не сработает для Oracle например.
Polaris Отправлено: 22 Января, 2010 - 10:44:14 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
EuGen пишет:
Если все равно, какая именно запись попадет в результат, можно сделать:

SELECT table1.field1, table2.field2 FROM table1
LEFT JOIN table2 ON table1.key1 = table2.key2
GROUP BY table2.field2

(Думаю, идея ясна)


Черт, конечно! Спасибо!
(Добавление)
Совсем обнаглею - а можно ли выбрать, например, именно первую запись из второй? В принципе, не особо нужно, но интересно...
Polaris Отправлено: 22 Января, 2010 - 10:37:54 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
Phantik пишет:
SELECT ........ LIMIT 1


а если:
id 1 2
name 'Торговый центр' 'Бизнес центр'

building_file
id 1 2 3 4 5 6
id_building 1 1 1 2 2 2
file_name '1.jpg' '2.jpg' '3.jpg' '1_1.jpg' '2_1.jpg' '3_1.jpg'

, и надо:
'Торговый центр' '1.jpg'
'Бизнес центр' '1_1.jpg'

?
Polaris Отправлено: 22 Января, 2010 - 10:25:15 • Тема: Можно ли составить вот такой запрос • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 101
Имеется вот такая связка таблиц (см. вложение). Одной записи в таблице building может соответствовать несколько в таблице building_photo.
Хочу сделать такой запрос - в результирующей выборке building.name, building_file.file_name, но значение building_file.file_name должно быть только одно (первое, например), тогда как в building_file их может быть несколько.
Например, если имеем:
building
id 1
name 'Торговый центр'

building_file
id 1 2 3
id_building 1 1 1
file_name '1.jpg' '2.jpg' '3.jpg'

то результирующую выборку хочу (строк в выборке может быть много):
'Торговый центр' '1.jpg'
, а не:

'Торговый центр' '1.jpg'
'Торговый центр' '2.jpg'
'Торговый центр' '3.jpg'

С выбором всех значений нет проблем, а вот можно ли (и если можно, то как) выбрать одно?
Polaris Отправлено: 30 Декабря, 2009 - 12:52:45 • Тема: Как правильнее организовать выборку из базы? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 53
Все как раз связано по FK. У меня такое ощущение, что я слишком заморочился по этому поводу Улыбка
Polaris Отправлено: 30 Декабря, 2009 - 11:16:04 • Тема: Как правильнее организовать выборку из базы? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 53
Champion пишет:
Тут в любом случае, как и везде, нужно правильно построить индексы по таблицам. Тогда будет тебе и быстродействие.


Спасибо за ответ! Я правильно понял - построить индексы по связываемым полям?
Polaris Отправлено: 30 Декабря, 2009 - 10:25:14 • Тема: Как правильнее организовать выборку из базы? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 53
Добрый день и с Наступающим! Улыбка
Вопрос у меня неконкретный, скорее теоретический вопрос.
Есть основная таблица, есть таблица-справочник. Есть промежуточная таблица, организующая связь "один ко многим" между справочником и основной. Таких пар (таблица-справочник и промежуточная таблица) несколько десятков.
В общем, с базами я работать учусь, хочу понять, как правильно организовать выборку - требуется вывести на странице все множественные значения справочника для одной записи из основной таблицы.

Как построить запрос - у меня есть 2 варианта:
1. Собственно связать таблицы в запросе и выбрать.
2. Сделать view, в котором связать таблицы и выбирать из него.

Может, можно еще как-то, но я пока об этом не знаю.
Интересует вопрос быстродействия и загрузки сервера. Я читал, что в веб-программировании за любой лишний запрос к базе следует бить по рукам. Улыбка
А тут запросов, как ни крути - несколько десятков.
Как в данном случае поступить правильнее?
Polaris Отправлено: 27 Ноября, 2009 - 13:32:30 • Тема: Связанные SELECT'ы с выборкой из базы • Форум: Программирование на PHP

Ответов: 3
Просмотров: 480
JustUserR пишет:
Лучше бы с помощью JS организовать соответствующую выборку


вот тут не совсем понял как, можно ткнуть носом в пример? Закатив глазки
Polaris Отправлено: 25 Ноября, 2009 - 08:13:29 • Тема: Связанные SELECT'ы с выборкой из базы • Форум: Программирование на PHP

Ответов: 3
Просмотров: 480
На сайте есть архив новостей. Хочу сделать такое - два селекта с годом и месяцем. При выборе года во второй селект выбираются все месяцы этого года, в которых были новости, и ниже - выбираются все новости в этот месяц и год. При выборе месяца - аналогично, выбираются все новости в этот месяц. Когда заходишь в архив - в списках последние ближайшие год и месяц, в которые были новости (например сейчас - 2009 и ноябрь).
Проблема в следующем - к примеру, новости начали заполняться с декабря 2005. Захожу на страницу - 2009, ноябрь. Выбираю 2005 - в списках устанавливается 2005 и декабрь, но сабмит формы проходит по 2005, ноябрь - и никакие новости не выбираются.
Туплю второй день - как бы поправить это дело?

CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if(!empty($_GET['year']))
  4.         $year = $_GET['year'];
  5. else    {
  6.         if($result = $p_db->query ("select max(year(r_date)) from news where id_type=".$_GET['id_type']))
  7.         if($row = $result->fetch_row ())
  8.                 $year   = $row[0];
  9.                
  10. $result->free ();
  11. }
  12.  
  13. if(!empty($_GET['month']))
  14.         $month = $_GET['month'];
  15. else    {
  16.         if($result = $p_db->query ("select max(month(r_date)) from news where year(r_date)=$year and id_type=".$_GET['id_type']))
  17.         if($row = $result->fetch_row ())
  18.                 $month  = $row[0];
  19. $result->free ();
  20. }
  21. ?>
  22.                                                                                
  23. ?>
  24. <form name="date_selector" action="" method="get" style="padding-bottom:10px;">
  25.         Год:&nbsp;&nbsp;&nbsp;&nbsp;
  26.         <select class="s3" name="year" id="year" onChange="date_selector.submit();">
  27.         <?php
  28.                 if($result = $p_db->query ("select distinct year(r_date) from news order by 1 asc"))
  29.                 while($row = $result->fetch_row ())
  30.                                 echo '<option value="'.$row[0].'"'.((strcmp($year, $row[0]) == 0)?' selected':'').'>'.$row[0].'</option>';
  31.                                                                                                                                                
  32.                 $result->free ();
  33.         ?>
  34.         </select>&nbsp;&nbsp;&nbsp;&nbsp;
  35.         Месяц:&nbsp;&nbsp;&nbsp;&nbsp;
  36.         <select class="s3" name="month" id="month" onChange="date_selector.submit();">
  37.         <?php
  38.                 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"))
  39.                 while($row = $result->fetch_row ())
  40.                                 echo '<option value="'.$row[0].'"'.((strcmp($month, $row[0]) == 0)?' selected':'').'>'.$row[1].'</option>';
  41.                                                                                                                                        
  42.                 $result->free ();
  43.         ?>
  44.         </select>
  45.         <input type="hidden" name="id_type" value="<?php echo $_GET['id_type']; ?>">
  46. </form>
Polaris Отправлено: 10 Ноября, 2009 - 06:24:55 • Тема: XML DOM и windows-1251 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 700
JustUserR пишет:
Polaris А если перекодировать уже сам текст к примеру с помощью iconv ?
То есть соединились с яндексом и считали в UTF-8 потом обработали данные потом их прогнали через перекодировщик и вывели в CP1251


Да я уже в принципе ручками все сделал, без XML DOM Улыбка Все равно спасибо!
Polaris Отправлено: 09 Ноября, 2009 - 14:08:43 • Тема: XML DOM и windows-1251 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 700
valenok пишет:
http://il2.php.net/manual/en/domdocument.construct.php


пробовал. к сожалению, не поддерживается там 1251
Цитата:

libxml2 has a set of default converters for the following encodings (located in encoding.c):

1.UTF-8 is supported by default (null handlers)
2.UTF-16, both little and big endian
3.ISO-Latin-1 (ISO-8859-1) covering most western languages
4.ASCII, useful mostly for saving
5.HTML, a specific handler for the conversion of UTF-8 to ASCII with HTML predefined entities like &copy; for the Copyright sign.


http://xmlsoft[dot]org/encoding[dot]html

Вообще, наверно уже проще ручками, безо всякого XML DOM.
Polaris Отправлено: 09 Ноября, 2009 - 11:19:03 • Тема: XML DOM и windows-1251 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 700
Надо сделать RSS для яндекса, а там одно из требований - чтобы кодировка в rss совпадала с основной кодировкой страниц сайта. Основная у меня windows-1251.
Помучился немного сам, потом почитал про XML DOM - он работает только с UTF-8.
А как лучше поступить, если результирующий файл должен быть в windows-1251?

Сейчас пока идея такая - php-шный скрипт для создания rss запускается кроном пару раз в сутки, делает xml в UTF-8, а потом в конце вызывается iconv и преобразовывает файл в windows-1251. Ну и отдельно заголовок xml придется преобразовать.

Насколько это правильно/оправданно? Может, есть более элегантное решение?
Polaris Отправлено: 30 Сентября, 2009 - 10:39:43 • Тема: Проблема с сессией • Форум: Программирование на PHP

Ответов: 19
Просмотров: 1212
Всем спасибо, все заработало!
В начале main.php и captcha.php сделал
CODE (text):
скопировать код в буфер обмена
  1.  unset($_SESSION['code']);
, потом сделал проверку капчи на AJAX, сейчас все замечательно.

PS. Спасибо всем за отзывчивость и наведение на верные мысли! Нечасто сюда писал, но народ здесь всегда дружелюбный и отзывчивый, что очень радует!

Страниц (3): « 1 [2] 3 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB