Помогите составить sql запрос.

seosniks
На сайте с 13.08.2007
Offline
389
570

Добрый вечер всем форумчанам.

Будьте добры помогите составить запрос на выборку из таблиц, список таблиц ниже.

product

product_description

product_to_store.

product_image

product_reward

product_to_category

url_alias

все таблицы имеют связывающее поле product_id.

главная таблица product

Ато чето по джойнам котел не варит )))

В цикле мне надо будет вывести из каждой таблицы нужные данные, но как это сделать не могу допетрить.

Sveta Prokopeva
На сайте с 10.05.2006
Offline
99
#1

Ну наверно как-то так:

SELECT * FROM `products` p, `product_description` d, `product_image` i, `product_reward` r, `product_to_category` c, `product_to_store` s, `url_alias` u

WHERE p.`id` = d.`product_id`
AND p.`id` = i.`product_id`
AND p.`id` = r.`product_id`
AND p.`id` = c.`product_id`
AND p.`id` = s.`product_id`
AND p.`id` = u.`product_id`

Или так:

SELECT * FROM `products` p

INNER JOIN `product_description` d ON p.`id` = d.`product_id`
INNER JOIN `product_image` i ON p.`id` = i.`product_id`
INNER JOIN `product_reward` r ON p.`id` = r.`product_id`
INNER JOIN `product_to_category` c ON p.`id` = c.`product_id`
INNER JOIN `product_to_store` s ON p.`id` = s.`product_id`
INNER JOIN `url_alias` u ON p.`id` = u.`product_id`
C
На сайте с 04.02.2005
Offline
291
#2

Sveta Prokopeva, Все верно, если в КАЖДОЙ таблице есть сооответсвующий product_id

иначе - LEFT JOIN

SELECT * FROM `products` p

LEFT JOIN `product_description` d ON p.`id` = d.`product_id`

LEFT JOIN `product_image` i ON p.`id` = i.`product_id`

и т.д

IL
На сайте с 20.04.2007
Offline
435
#3

Ещё можно USING-ом..

SELECT * FROM `products` p
INNER JOIN product_description USING(product_id)
INNER JOIN product_image USING(product_id)
...

Вот только подозреваю, что product_to_category и product_to_store это связки many-many и цикл придётся "обрабатывать" (т.к. будет несколько строк на одну строку product).

Да и, как показывает практика, лучше использовать несколько простых запросов по первичному ключу, чем 1 с кучей JOIN-ов..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
rammlied
На сайте с 13.04.2011
Offline
56
#4

В случае с джоинам не ругнется на звездочку? Там же неуникальное поле продукт_ид

делаю СДЛы, получаются ГСы )
doctorpc
На сайте с 12.07.2009
Offline
112
#5
rammlied:
В случае с джоинам не ругнется на звездочку? Там же неуникальное поле продукт_ид

Нет.

А вообще, если сомневаетесь, просто попробуйте :)

seosniks
На сайте с 13.08.2007
Offline
389
#6
ivan-lev:
Ещё можно USING-ом..

SELECT * FROM `products` p

INNER JOIN product_description USING(product_id)
INNER JOIN product_image USING(product_id)
...


Вот только подозреваю, что product_to_category и product_to_store это связки many-many и цикл придётся "обрабатывать" (т.к. будет несколько строк на одну строку product).
Да и, как показывает практика, лучше использовать несколько простых запросов по первичному ключу, чем 1 с кучей JOIN-ов..

У меня есть 2 базы, вот я и хочу из одной базы закинуть товары в другую, но в другой так же есть товар.

Вот хочу написать парсер.

---------- Добавлено 27.09.2013 в 21:34 ----------

ivan-lev:

Да и, как показывает практика, лучше использовать несколько простых запросов по первичному ключу, чем 1 с кучей JOIN-ов..

А можно подробнее, простенький примерчик, спасибо.

C
На сайте с 04.02.2005
Offline
291
#7

product может входить в несколько категорий

далеее... анализ делайте самостоятельно...

IL
На сайте с 20.04.2007
Offline
435
#8
seosniks:
А можно подробнее, простенький примерчик, спасибо.

SELECT * FROM `category` WHERE `id` IN (1,2, тут ID-шники интересующих категорий через запятую)
seosniks:
У меня есть 2 базы, вот я и хочу из одной базы закинуть товары в другую, но в другой так же есть товар.

Зачем JOIN-ить?

seosniks:
Вот хочу написать парсер.

А что понимается под парсером? о_О

seosniks
На сайте с 13.08.2007
Offline
389
#9
ivan-lev:
SELECT * FROM `category` WHERE `id` IN (1,2, тут ID-шники интересующих категорий через запятую)


Зачем JOIN-ить?


А что понимается под парсером? о_О

Ну парсер конвертер, импортнер или что либо подобное, задача взять из базы а загнать в базу б.

Я пробовал но не вышло, просто к каждому товару есть по несоклько картинок и в общем возни кучка.

Я перегнал базу moguta cms в базу opencart, а вот взять данные сразу из всех таблиц в базе opencart не выходит.

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