PHP.SU

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

Страниц (7): [1] 2 3 4 5 6 7 »

> Найдено сообщений: 92
pro_xaoc Отправлено: 27 Мая, 2016 - 09:35:45 • Тема: Объединение двух таблиц • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 62
Sail пишет:
pro_xaoc, для такого случая есть возможность неоднократно использовать одну таблицу в запросе для получения данных из разных её строк по разным критериям, применяя псевдоним для именования таблицы:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT users.*, street_from.`name` AS street_from_name, street_to.`name` AS street_to_name
  2.        FROM users
  3.        LEFT JOIN streets street_from
  4.             ON users.street_from = street_from.id
  5.        LEFT JOIN streets street_to
  6.             ON users.street_to = street_to.id

Спасибо! То, что надо. Не знал, что можно неоднократно использовать одну таблицу в JOIN-ах Радость
pro_xaoc Отправлено: 26 Мая, 2016 - 17:17:28 • Тема: Объединение двух таблиц • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 62
Доброго времени суток!
Помогите пожалуйста с запросом, полдня гуглю - решение не могу найти.
В общем, для наглядности есть две таблицы:

Таблица STREETS - названия улиц
CODE (SQL):
скопировать код в буфер обмена
  1. id      name
  2. 4    Московский
  3. 7    Яблочная
  4. 10   Гагарина


Таблица USERS - пользователи с адресами, где цифры в адресах - id с таблицы названии улиц
CODE (SQL):
скопировать код в буфер обмена
  1. id       fio        street_from    street_to
  2. 1      Арсен         4                  10
  3. 2      Коля          7                   4
  4. 3      Петя          4                    7
  5. 4      Степан       10                  7


Суть проблемы: надо сделать запрос с JOINами, чтобы получилась следующая таблица

CODE (SQL):
скопировать код в буфер обмена
  1. id       fio        street_from    street_to   street_from_name          street_to_name
  2. 1      Арсен         4                  10           Московский                Гагарина
  3. 2      Коля          7                   4             Яблочная                  Московский
  4. 3      Петя          4                    7            Московский               Яблочная
  5. 4      Степан       10                  7              Гагарина                  Яблочная


Мой sql-код:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT users.*, streets.name AS street_name
  2.        FROM users
  3.        LEFT JOIN streets
  4.             ON users.street_from = streets.id AND users.street_to = streets.id


Дело в том, что при в моем случае выбирается последняя street_to_name. Копая в разные JOIN-ы (INNER, RIGHT и т.д.) совсем запутался. Помогите пожалуйста
pro_xaoc Отправлено: 18 Апреля, 2014 - 09:52:56 • Тема: Не получается создать запрос MySQL • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 74
DlTA, именно.
Мелкий, как вы и сказали, ошибку допустил в другом месте, в функции где выполняется execute. С limit я разобрался с конструкцией
PHP:
скопировать код в буфер обмена
  1. $res_query->bindValue(':lim_end', (int)$this->arrayParams[':lim_end'],PDO::PARAM_INT);
. Но теперь код SQL работает не так, как мне надо. Нужно вывести из таблицы articles только те, у которых category=<category>, которых я подставляю потом. Нижеприведенным кодом, возвращается пустой ответ:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT articles.category, articles.id, articles.title, articles.publication, articles.author, articles.access, articles.add_date, categories.description FROM articles LEFT JOIN categories ON articles.category=categories.id WHERE articles.category=:category LIMIT 0,:lim_end

Пробовал еще так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT articles.category, articles.id, articles.title, articles.publication, articles.author, articles.access, articles.add_date, categories.description FROM articles LEFT JOIN categories ON articles.category=categories.id AND articles.category=:category LIMIT 0,:lim_end

в таком случае возвращается все материалы и еще, значение category.description - NULL.
Не пойму, почему так ...
(Добавление)
Пардон, снова моя ошибка Радость В общем, спасибо за участие Подмигивание
pro_xaoc Отправлено: 18 Апреля, 2014 - 09:23:58 • Тема: Не получается создать запрос MySQL • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 74
DlTA, это не хрень, это именованные плейсхолдеры ... возможно проблему решил, тестирую ...
pro_xaoc Отправлено: 18 Апреля, 2014 - 09:05:22 • Тема: Не получается создать запрос MySQL • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 74
условие WHERE я не могу убрать, т.к. именно это мне и нужно. А в чем смысл перестановки categories.id = articles.category? Хотя попробовал - ничего не дало.
pro_xaoc Отправлено: 18 Апреля, 2014 - 08:50:09 • Тема: Не получается создать запрос MySQL • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 74
KingStar, я так пробовал
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT articles.category, articles.id, articles.title, articles.publication, articles.author, articles.access, articles.add_date, categories.description FROM articles LEFT JOIN categories ON articles.category=categories.id WHERE articles.category=:category LIMIT 0,:lim_end

все равно та же ошибка(
pro_xaoc Отправлено: 18 Апреля, 2014 - 00:30:56 • Тема: Не получается создать запрос MySQL • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 74
Уважаемые!

Скажите пожалуйста, почему данный sql выбрасывает ошибку:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT articles.category, articles.id, articles.title, articles.publication, articles.author, articles.access, articles.add_date, categories.description FROM articles WHERE articles.category=:category LEFT JOIN categories ON articles.category=categories.id LIMIT 0,:lim_end

а в php для pdo соответственно впихиваю следующий массив:

При выводе ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens<br />/var/www/zk.net/www/cpanel/db/CPGoSQLDb.php on line 63
Т.е. ругается что не соответствуют количество параметров, но блин, их в запросе 2 и в массиве 2. Причем если убрать WHERE, то норм работает, значит проблема в нем. Видимо не туда вставил, тогда как?
pro_xaoc Отправлено: 03 Апреля, 2014 - 14:18:51 • Тема: Объединить два запроса в один • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 66
Точно, спасибо.
pro_xaoc Отправлено: 03 Апреля, 2014 - 14:15:16 • Тема: Объединить два запроса в один • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 66
3d_killer, да верно, хотел разбить на страницы. Спасибо за помощь, про SQL_CALC_FOUND_ROWS уже изучаю. Кстати, каким образом можно проверить скорость выполнения запроса?
pro_xaoc Отправлено: 03 Апреля, 2014 - 14:03:47 • Тема: Объединить два запроса в один • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 66
Я к тому, чтобы при вызове функции не создавалось два запроса ( - производительность), а одним запросом достать данные и дальше обработать.
Почему не стоит объединять?
pro_xaoc Отправлено: 03 Апреля, 2014 - 13:52:15 • Тема: Объединить два запроса в один • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 66
Приветствую всех!

Как возможно объединить два запроса в один:

1)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT articles.category,
  2. articles.id,
  3. articles.title,
  4. articles.publication,
  5. articles.author,
  6. articles.access,
  7. articles.add_date,
  8. categories.description FROM articles LEFT JOIN categories ON articles.category=categories.id LIMIT 0,:lim_end


2)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(*) FROM articles


Заранее спасибо!
pro_xaoc Отправлено: 24 Марта, 2014 - 16:48:09 • Тема: Снизится ли производительность при дополнительном запросе mysql • Форум: Программирование на PHP

Ответов: 4
Просмотров: 283
хм, раньше никогда не использовал join, по описании - то что мне нужно, спасибо за мысль.
pro_xaoc Отправлено: 24 Марта, 2014 - 16:38:52 • Тема: Снизится ли производительность при дополнительном запросе mysql • Форум: Программирование на PHP

Ответов: 4
Просмотров: 283
можно поподробнее?
pro_xaoc Отправлено: 24 Марта, 2014 - 16:32:20 • Тема: Снизится ли производительность при дополнительном запросе mysql • Форум: Программирование на PHP

Ответов: 4
Просмотров: 283
Приветствую всех!

В общем, как думаете, как правильно хранить название (допустим) категории в таблице БД статьи? т.е. я хочу хранить id категории в строке статьи,но если сделаю так, то когда понадобится показывать к какой категории принадлежит, должен буду сделать дополнительной запрос, чтоб достать по этой id название категории из таблицы Категории (иначе будет виден только id). Не снизится ли производительность при таких дополнительных запросах?

Спасибо.
pro_xaoc Отправлено: 06 Февраля, 2014 - 19:42:41 • Тема: Подкаталог сайта сделать корневым htaccess • Форум: Программирование на PHP

Ответов: 3
Просмотров: 264
надо именно без /admin в начале

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB