- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно объединить два запроса $newitems и $newitems2 в один:
$newitems = mysql_query("SELECT * FROM items, items_info
WHERE items.i_id = items_info.ii_item_id AND items.i_options IN (7, 15)");
while ($myrow = mysql_fetch_array($newitems)){
$newitems2 = mysql_query("SELECT * FROM items, items_info
WHERE items.i_id = items_info.ii_item_id AND items_info.ii_title = '{$myrow['ii_title']}'
AND items.i_options = 3");
}
Может так?
Хотя расскажите на словах, что у вас там выбирается? Вроде ищете названия каких-то опций и потом выбираете опции с тем же названием, но с признаком 3?
Или пытаетесь найти записи, у которых есть признаки (7 и 3 ) или (15 и 3)?
Попробую объяснить. Сайт интернет-магазина. Есть главный товар и есть разновидности этого товара. Опцию "новинка" можно поставить только на главный товар. Мне нужно вывести все "новинки" + все дополнительные товары у которых главный "новинка".
Главный товар и дополнительные товары связаны только именем - т.е. поле ii_title у них всех одинаковое. Главный товар отличается только тем, что кроме названия у него есть еще описание и т.д. и т.п. А у дополнительных товаров есть только название, одна строчка характеристики и цена - и все.
i_option = 3 если товар есть в наличии
i_option = 7 если товар есть в наличии и он новинка
i_option = 15 если товар есть в наличии и он новинка и на него есть акция
---------- Добавлено 23.01.2012 в 20:32 ----------
Еще вариант запроса:
$newitems = mysql_query("SELECT * FROM items, items_info WHERE items.i_id = items_info.ii_item_id AND items.i_options IN (3, 7, 15) ORDER BY items.i_default_category ASC, items_info.ii_title ASC");
if (mysql_num_rows($newitems) > 0){
while ($myrow = mysql_fetch_array($newitems)){
$newitems2 = mysql_query("SELECT * FROM items, items_info WHERE items.i_id = items_info.ii_item_id AND items.i_options IN (7, 15) AND items_info.ii_title = '{$myrow['ii_title']}'");
if (mysql_num_rows($newitems2) > 0){
Понятно теперь что хотите.
А вот мой запрос не проходит, который в посте выше?
WHERE i1.i_id = ii1.ii_item_id AND ii1.ii_title = ii2.ii_title AND i2.i_options IN (7, 15)
AND i1.i_options = 3
Только поправленный, в последнем условии алиас забыл использовать. И, видимо, надо будет колонки руками перечислить, которые надо выбрать, а то совпадать имена будут.
Не работает. Пишет mysql_num_rows(): supplied argument is not a valid MySQL result resource
Тут еще один нюанс - дополнительным товарам, у которых i_option = 3 нужно присвоить id главного товара, у которого i_option = 7 или 15. Это реально в одном запросе сделать или проще уже как я написал второй запрос? Как это сделать в моем варианте я знаю и уже сделал, но если можно красивей реализовать, было бы лучше.
---------- Добавлено 23.01.2012 в 20:50 ----------
Т.е. мой громоздкий вариант:
$newitems = mysql_query("SELECT * FROM items, items_info WHERE items.i_id = items_info.ii_item_id AND items.i_options IN (3, 7, 15) ORDER BY items.i_default_category ASC, items_info.ii_title ASC");
if (mysql_num_rows($newitems) > 0){
while ($myrow = mysql_fetch_array($newitems)){
$newitems2 = mysql_query("SELECT * FROM items, items_info WHERE items.i_id = items_info.ii_item_id AND items.i_options IN (7, 15) AND items_info.ii_title = '{$myrow['ii_title']}'");
if (mysql_num_rows($newitems2) > 0){
$myrow2 = mysql_fetch_array($newitems2);
$id = $myrow['i_id'];
$myrow['i_id'] = $myrow2['i_id'];
Мой запрос надо как минимум переписать, чтобы там звездочки в селекте не было.
А так, если товаров у вас много - то я бы не стал джойнить эту таблицу саму на себя. И вариант с джойном я бы красивым уж точно не назвал :)
Что-то голова не варит к ночи :(
хм. ну тогда буду по-своему делать. громоздко, но работает. Всеравно спасибо большое! :) теперь хоть больше понимаю как можно объединять.