mysql - Link to multiple foreign rows from one row -
mysql - Link to multiple foreign rows from one row -
i don't know how called couldn't find answer.
for illustration have next tables:
table products table users +----------+----------+----------+ +----------+----------+ | id | name | cost | | username | products | +----------+----------+----------+ +----------+----------+ | 1 | breadstuff | 1.5 | | james | 1, 2 | +----------+----------+----------+ +----------+----------+ | 2 | cookies | 2.0 | | david | 2, 3 | +----------+----------+----------+ +----------+----------+ | 3 | milk | 1.2 | | paul | 3, 1 | +----------+----------+----------+ +----------+----------+
products.id
foreign key users.products
.
i name , cost of david's products using mysql query. should homecoming following:
+----------+----------+ | name | cost | +----------+----------+ | cookies | 2.0 | +----------+----------+ | milk | 1.2 | +----------+----------+
the join
function best utilize guess, david can have 1 or 100 products. creating 100 columns fit products doesn't sound efficient.
how can realize this?
currently i'm fetching , filter using php, not problem @ moment tables grow guess inefficient.
this solved changing info model.
users +----------+----------+ | id | username | +----------+----------+ | 1 | fred | +----------+----------+ | 2 | john | +----------+----------+ products +----------+----------+----------+ | id | name | cost | +----------+----------+----------+ | 1 | breadstuff | 1.5 | +----------+----------+----------+ | 2 | cookies | 2.0 | +----------+----------+----------+ | 3 | milk | 1.2 | +----------+----------+----------+
and here comes magic: connect 2 tables using 3rd table:
user_procuct_connections +----------+----------+------------+ | id | user_id | product_id | +----------+----------+------------+ | 1 | 1 | 2 | -> fred has cookies +----------+----------+------------+ | 2 | 1 | 3 | -> fred has milk +----------+----------+------------+ | 3 | 2 | 1 | -> john has breadstuff +----------+----------+------------+
if want user able own single product only, can remove id column, create user_id
, product_id
primary key together.
then when want illustration of freds products just
select * products id in ( select product_id user_procuct_connections user_id = 1 )
mysql sql
Comments
Post a Comment