Создайте вторую таблицу:
CREATE TABLE FEATURED_PRODUCTS (
ID INTEGER NOT NULL,
PRODUCT_ID INTEGER NOT NULL,
PRODUCT_ORDER INTEGER NOT NULL
)
Затем просто присоединиться к исходной таблице, когда вы хотите, чтобы найти выбранные продукты:
SELECT P.*
FROM PRODUCTS P
INNER JOIN FEATURED_PRODUCTS FP ON P.ID = FP.PRODUCT_ID
ORDER BY FP.PRODUCT_ORDER
Его, вероятно, стоит о том, что идентификатор в FEATURED_PRODUCTS таблице является не строго необходимо, мне просто не нравится иметь таблицы без первичных ключевых столбцов.
---- EDIT ----
Более полный пример:
CREATE TABLE FRUIT_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
FARM_OF_ORIGIN VARCHAR(255)
)
CREATE TABLE BREAD_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
TYPE_OF_GRAIN VARCHAR(255)
)
CREATE TABLE MEAT_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
ANIMAL VARCHAR(255)
)
CREATE TABLE FEATURED_PRODUCTS (
ID INTEGER NOT NULL,
TABLE_NAME VARCHAR(255),
PRODUCT_ID INTEGER NOT NULL,
PRODUCT_ORDER INTEGER NOT NULL
)
Тогда вы могли бы присоединиться к ним все таким образом:
SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, P.FARM_OF_ORIGIN,
NULL AS TYPE_OF_GRAIN, NULL AS ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN FRUIT_PRODUCTS P ON FP.TABLE_NAME = 'FRUIT_PRODUCTS'
AND FP.PRODUCT_ID = P.ID
UNION
SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, NULL AS FARM_OF_ORIGIN,
P.TYPE_OF_GRAIN, NULL AS ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN BREAD_PRODUCTS P ON FP.TABLE_NAME = 'BREAD_PRODUCTS'
AND FP.PRODUCT_ID = P.ID
UNION
SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, NULL AS FARM_OF_ORIGIN,
NULL AS TYPE_OF_GRAIN, P.ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN MEAT_PRODUCTS P ON FP.TABLE_NAME = 'MEAT_PRODUCTS'
AND FP.PRODUCT_ID = P.ID
Который даст вам набор результатов, содержащий все доступные продукты. Обратите внимание, что это не проверено, но должно получить идею через.
. , 'order' является паршивым именем для столбца, потому что это зарезервированное слово MySQL. –
@GordonLinoff Абсолютно корректно ... Обновление сейчас. – Lucas
Да, это хорошо для одного типа продуктов, но у меня есть 3 типа продуктов, и вы не можете присоединиться к 3 таблицам друг к другу на одном столбце. Или, может быть, я должен создавать столбцы для каждой таблицы, чтобы присоединиться к ним в таблице признанных продуктов? – user2042930