MySQL присоединиться Вопрос - PullRequest
2 голосов
/ 09 февраля 2011

Я пытаюсь установить связь «многие ко многим» между таблицей БД «Продукты» и таблицей «Компании»

Компания имеет уникальный идентификатор, а продукты имеют уникальный идентификатор, а также их первичные ключи.

И скажем, в таблице 'Sells' в качестве столбцов указаны company_id и product_id.Поскольку это будет отношение «многие ко многим», первичного ключа для этой таблицы не будет, верно?

Каким будет запрос Mysql, если я хочу получить продукты, принадлежащие котдельная компания?Можно ли это сделать одним запросом?

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

У вас может быть первичный ключ, состоящий из нескольких столбцов, поэтому для вашей объединенной таблицы вы должны сделать первичный ключ (company_id, product_id).

1 голос
/ 09 февраля 2011

Лично я бы сделал первичный ключ составного (company_id, product_id) в таблице Sells.

Что касается самих запросов, если вы хотите, чтобы информация о продукте возвращалась:

select p.*
    from Sells s
        inner join products p
            on s.product_id = p.product_id
    where s.company_id = 123

Если вы хотите вернуть информацию о компании и продукте:

select c.*, p.*
    from Company c
        inner join Sells s
            on c.company_id = s.company_id
        inner join products p
            on s.product_id = p.product_id
    where c.company_id = 123
0 голосов
/ 09 февраля 2011

Так как это будет много ко многим отношения не было бы первичный ключ для этой таблицы, верно?

Тот факт, что существует отношение многие ко многим, не мешает вам добавить первичный ключ. Вы можете создать один с автоматическим идентификатором (Sale_Id). Вы не должны полагаться на product_id + company_id, поскольку данная компания может продавать один и тот же продукт более одного раза.

На что был бы похож запрос Mysql, если бы я хочу получить продукты, которые принадлежат одной компании? Это может быть сделано в одном запросе?

SELECT S.PRODUCT_ID FROM SALES S INNER JOIN COMPANY C ON (C.ID = S.COMPANY_ID) WHERE C.ID = XXX
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...