Как задать между таблицами в mysql отношение многие-ко-многим. Вот есть две таблицы: Заказчики и Товары. Одной записи в заказчики может соответствовать несколько в товары и наоборот одной записи товары несколько в заказчики. Какой тут подход может быть?
|
Dutchman Mihel
создай: таблицу со покупателями таблицу с товарами таблицу со связами |
Vlad Drakula
Вот про таблицу со связями самое интересное. Например в access многие-ко-многим делалаются с помощью промежуточной таблицы с индексами (типа ТоварID и ЗаказчикID) оба они - primary key и связываются со счетчиками в таблицах Товары и Заказчики. Но в mysql в одной таблице не может быть два primary key. Как быть? |
Primary key в MySql это уникальный ключ с ограничением на NULL, т.е. значения столбца не могут принримать NULL. Если есть таблица связи 1-n, то, имхо, как минимум один столбец не может быть primary. В общем уникальность это такая штука с которой лучше работать когда нужно что-то нумеровать или не позволить повторяться. В вашем же случае (таблица связи) в этом нет необходимости.
|
Dutchman Mihel
ровно точно также как и в access, только вместо primary key - key |
Prisoner
Vlad Drakula То есть если я правильно понял мне нужно просто создать промежуточную таблицу с ключиками и остальное делать запросом со множеством left join'ов. |
Хм... если есть табличка для связи, то можно без join:
Код:
SELECT |
Prisoner
Цитата:
Обычно я играюсь с частью запроса from и в where у меня все кратко, так что спасибо за пример и вообще за ценные советы |
Prisoner
там же явный скрытый JOIN сидит :) Вообще-то, чем ближе запрос к классике SQL (или, еще точнее, к реляционной алгебре), тем в большинстве случаев оптимальнее, т.к. все равно транслятор СУБД будет этим заниматься (по крайней мере есть надежда, что будет ;)) |
Цитата:
|
Prisoner
Цитата:
|
Время: 13:41. |
Время: 13:41.
© OSzone.net 2001-