Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сформировать запрос SQL / 5 сообщений из 5, страница 1 из 1
10.05.2017, 09:17
    #39450566
Batyabest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сформировать запрос SQL
Добрый день. У меня на сайте нужно вывести товары, но проблема в том, что вся информация разбросана по разным таблицам БД. Если большинство информации я смог связать по ID товара, то со ссылками какая-то беда. Сайт на DRUPAL 6. Есть некая таблица url_alias, в ней такие столбцы: pid, src, dst, language Мне нужно выдернуть адрес по такому условию - записи у которых src = /node/740, где 740 - ID товара. У меня есть массив из ID товаров

Код: php
1.
$pages_id= = array(840, 1411, 1390, 736, 898, 1578, 1337, 1381, 1581, 1563);



Вот такой запрос выводит как нужно

Код: php
1.
$nodes = db_query("SELECT n.title, p.field_prod_price_value, p.field_sred_ocen_value, p.field_kol_gol_value, h.dst FROM ({node} n INNER JOIN {content_type_prod} p ON n.nid = p.nid)  INNER JOIN {url_alias} h ON h.src='node/840' WHERE n.nid IN (" . implode(",", $pages_id) . ")");



Как вместо h.src='node/840' поставить перебор массива $pages_id ? Вернее вместо 840 чтобы добавлялся перебор массива?
...
Рейтинг: 0 / 0
10.05.2017, 10:23
    #39450599
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сформировать запрос SQL
Это форум по MySQL, и PHP-код тут как бы не по делу...
...
Рейтинг: 0 / 0
10.05.2017, 10:31
    #39450606
Batyabest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сформировать запрос SQL
Akina,

Согласен.
Я выделил только SQL запрос.
Как можно подставить перебор массива в sql запрос, чтобы вместо h.src='node/840' был перебор массива?
Код: sql
1.
SELECT n.title, p.field_prod_price_value, p.field_sred_ocen_value, p.field_kol_gol_value, h.dst FROM ({node} n INNER JOIN {content_type_prod} p ON n.nid = p.nid)  INNER JOIN {url_alias} h ON h.src='node/840' WHERE n.nid IN (" . implode(",", $pages_id) . ")"
...
Рейтинг: 0 / 0
10.05.2017, 11:23
    #39450651
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сформировать запрос SQL
Ну так и делайте абсолютно так же, как и в секции WHERE:
Код: sql
1.
INNER JOIN {url_alias} h ON h.src IN (список_значений_из_массива)


тем же самым IMPLODE преобразуя в CSV-список массив src-шек (не забудьте сделать обрамление значений кавычками! ибо строки).
...
Рейтинг: 0 / 0
10.05.2017, 11:27
    #39450656
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сформировать запрос SQL
Хотя поскольку везде INNER JOIN, то разумнее записАть текст запроса в форме произведения с отбором, а не размазывать условия. Т.е. что-то типа
Код: sql
1.
2.
3.
4.
5.
SELECT n.title, p.field_prod_price_value, p.field_sred_ocen_value, p.field_kol_gol_value, h.dst 
FROM {node} n, {content_type_prod} p, {url_alias} h
WHERE n.nid IN (" . implode(",", $pages_id) . ")"
  AND h.src IN ('" . implode("','", $adresses) . "') 
  AND n.nid = p.nid
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сформировать запрос SQL / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]