помогите сделать быборку из базы, куча таблиц

Статус
В этой теме нельзя размещать новые ответы.
Вся сложность в том, что не ясно, "какая выборка" нужна... особенно с учётом таблиц many-many - будет много строк на 1 товар. (да и таблица product_image, видимо, не по первичному ключу JOIN-ится... т.е. возможны дубли.)

Полям с одинаковыми именами можно через AS задавать псевдонимы
Код:
SELECT *, p.image as p_image, pi.image as pi_image FROM `products` p
INNER JOIN product_description pd USING(product_id)
INNER JOIN product_image as pi USING(product_id)
если, конечно, это интересующая часть ответа...

ну в том то и дело, что ТС написал, что есть, а забыл упомянуть, что конкретно ему нужно. Вот и я перечитываю топик и не могу вкурить, какая конкретно задача стоит и каким более оптимизированным путем ее решить

а вообще ТС рекомендую почитать литературу про SQL, прежде чем за это дело браться. Многие нубовские вопросы отпадут типа "А как это сделать? Реально ли это?"
 
esche, вы правы 100%.

Меня сбивает с толку product_image столбец image.
Я пробовал и джойнами. чето не выходит.
Нужно как то сделать ему алиас.
Кто шарит в PHPmyadmin

Меня интересует Запрос по примеру
Критерий: в критерии что вписывать?


и еще в SELECT я могу указать звездочку для всех?
И далее конкретные колонки в конкретных таблицах сделать алиасами?

*, p.image as p_image, pi.image as pi_image FROM

Вот все данные что мне нужны, они лежат в рязных таблицах.
но в таблице product_image столбец image может иметь много картинок относящихся в одному и тому же ID
А в product image картинка будет только одна, это превью.
$title =$r['name']; //Заголовок товара
$price=$r['price']; //Цена товара
$artikul =$r['sku']; // артикул
$scolko_tovara='100'; //Товара на складе
$stock_status_id='7'; //Статус товара, в наличии предзаказ итд
$language_id='1'; //Язык, 1 русский 2 английски и тд
$cpu =$r['meta_description']; //ЧПУ ссылка а так же все теги meta_description meta_keyword seo_title seo_h1
$text=$r['description']; //Текст товара
$imgs= basename($r[' image']) ; //Картинка превью, но такое же имя у переменной большой картинки.

Запрос я делал как то так.
PHP:
$dd= mysql_query("SELECT product.*, product_description.*, product_to_store.*, product_image.*, product_reward.*, product_to_category.*, url_alias.* FROM `product`,`//product_description`,`product_to_store`,`product_image`,`product_reward`,`product_to_category`,`url_alias`
  where product.product_id ");

Попробую сделать алиасами, как показал, esche.

Спасибо Всем что помогаете.

Хотел сотню товаров закинуть из базы а в базу Б
А вышел такой гиморой,

При этом я написал крипт который из базы moguta cms перегнал товары в opencart.

Вот так пашет но вытаскивает одинаковые данные тоесть limit 2 должен по идее отдать 2 разных товара.


Это работает
PHP:
 $dd= mysql_query("SELECT *, product.image as prev, product_image.image as full FROM `product`,`product_description`,`product_to_store`,`product_image`,`product_reward`,`product_to_category`,`url_alias` where product.product_id=product_image.product_id and product.product_id=10 limit 1");
Но мне надо .product_id=10 обработать с 0 до конца.
 
Последнее редактирование:
Вот так пашет но вытаскивает одинаковые данные тоесть limit 2 должен по идее отдать 2 разных товара.
Я чуть выше писал, что если на один товар приходится несколько изображений, то будет несколько строчек. Аналогичная ситуация и со связками many_many.

Посмотрите с другой стороны - сравните структуры старой и новой базы, сопоставьте, какие поля должны соответствовать и от этого уже плясать. И не нужно делать всё "одним махом" - перегнали товары.. затем перегнали изображения... При необходимости - сохранять соответствие id-шников (id_old, id_new) в отдельную таблицу, которую после конвертации удалить.

* Естественно, делать всё это не на рабочем сайте
 
В общем скрипт сделал, но появилась новая проблема.

Выводит по 2 раза каждый товар.
Код:
$dd = mysql_query("SELECT *,product.image as pr_img , product_image.image as imi  FROM product,product_description,product_to_store,product_image,product_reward,product_to_category
WHERE  product.product_id=product_description.product_id
and product.product_id =product_image.product_id
and    product.product_id= product_reward.product_id
and product.product_id  = product_to_category.product_id

  and product.product_id  =product_to_store.product_id
ORDER BY product.product_id asc
");



где может быть ошибка?
 
В общем скрипт сделал, но появилась новая проблема.

Выводит по 2 раза каждый товар.


где может быть ошибка?
Да нет никакой ошибки..
Если одному product_id соответствует несколько записей product_to_category, product_to_store или несколько изображений в таблице товара (в общем, в любой из таблиц) то для одного товара будет несколько строк. Если присмотреться к ним внимательнее (в phpmyadmin), можно увидеть, какими полями они отличаются.

Можно добавить GROUP BY product.product_id, тогда будут исключены дубли для товаров, но часть информации будет потеряна.
 
Оказывается я таблицу категорий воткнул, а она лишняя там.
Щас все отлично.

Все теперь сделал. Если кому надо скрипт могу дать ))))
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху