2015-02-11 4 views
0

У меня есть две таблицы в базе данных. Одним из них является имя поставщика (имя, общая информация), другое - тип поставщика. Поставщик может быть более одного типа. Таким образом, в базе данных моего провайдера вы можете выбрать три разных типа.Реляционные таблицы MYSQL

У меня возникли проблемы с выяснением путей доступа к имени provider_type. Я предполагаю объединение, но, похоже, не может пройти мимо этого.

Это то, что я сейчас:

SELECT p.name, p.phone, p.provider_type1, p.provider_type2 
FROM providers AS p 
INNER JOIN provider_type ON p.provider_type1 = provider_type.id 
WHERE installation_id = $installation_id 

Проблема я продолжать работать через это поставщик, который имеет более одного типа они могут быть придумывает в запросе дважды, а я просто хочу перечислить, что затем под списком укажите тип услуг, которые они могут предоставить.

Присоединение не похоже на прав. Все, что мне нужно сделать, это захватить имя provider_type с тем же идентификатором, что и providers.provider_type1 и т. Д.

Что я должен делать вместо этого. Благодарю.

+1

Вы не должны имеют несколько столбцов 'provider_type'. Нормализуйте свои данные, создав таблицу с отдельной строкой для каждой комбинации поставщиков/типов. – Barmar

+0

@Barmar спасибо, можете ли вы дать мне более конкретный пример того, что вы имеете в виду? Было бы так же просто, как добавить таблицу с provider_id и provider_type_id? Благодарю. – looloobs

+0

Да, это в основном это. – Barmar

ответ

0

Обратитесь к поставщику дважды, используя два псевдонима, по одному для каждого типа_портера.

См. this.

(Но лучше иметь таблицу для строк «поставщика [provider_id] имеет тип (имя) [provider_type]» вместо столбцов provider_typeX. Несмотря на то, что это не нормализация, только хороший дизайн.)

Смежные вопросы