У меня проблема, когда мне нужно ТОЛЬКО получить несколько вещей из моей начальной таблицы, а затем присоединиться к другому элементу из другой таблицы, а затем присоединить еще один элемент из другой таблицы. Я думал, что это будет легко, но это далеко не так. Вот моя информация по SQL (для простоты она хранится в одной записи).Объединение нескольких таблиц
select * from customers limit 1 \G;
*************************** 1. row ***************************
CustomerID: 9
CustomerMapsco: 459
CustomerActive: 1
CustomerFirstName: John
CustomerLastName: Doe
CustomerServiceStreet: 1314 Road Rd.
CustomerServiceCity: City
CustomerServiceState: TX
CustomerServiceZip: 12345
CustomerBillingStreet: 1314 Road Rd.
CustomerBillingCity: City
CustomerBillingState: TX
CustomerBillingZip: 12345
CustomerHomePhone: 1231231234
CustomerCellPhone: 1231231234
CustomerWorkPhone: 1231231234
CustomerWorkExt: 12345
CustomerFax: 1231231324
CustomerEmail: [email protected]
CustomerDog: 0
CrewID: 1
ScheduleID: 1
protected: 1
mysql> select * from customerservice limit 1 \G;
*************************** 1. row ***************************
CustomerSvcID: 15
CustomerID: 9
ServiceTypeID: 1
FrequencyTypeID: 1
DayID: 5
CustomerSvcCost: 21
CustomerSvcBeginDate: 2007-01-01 00:00:00
CustomerSvcEndDate: NULL
1 row in set (0.00 sec)
mysql> select * from frequency
-> ;
+-----------------+---------------+
| FrequencyTypeID | FrequencyType |
+-----------------+---------------+
| 1 | Weekly |
| 2 | Biweekly |
| 3 | One Time |
+-----------------+---------------+
Что мне нужно следующие столбцы:
customers.CustomerID, customers.CustomerActive, customers.protected, frequency.FrequencyType
Я полагал, что я должен сделать тройной присоединиться, чтобы получить FrequencyType из таблицы CustomerService как они обозначены только в этой таблице, а чем таблица клиентов. Поэтому я должен сделать еще один шаг, чтобы получить эту информацию (customers <> customerservice <> frequency
).
Удивительный, который решает его. Есть ли способ объяснить это для дальнейшего использования? Я предполагаю, что символы после 'FROM tablename' являются псевдонимами (' AS'?). Я не понимаю, что вы ссылались на них так, как они уже были определены в разделе «SELECT». Итак, я предполагаю, что MySQL (и, возможно, другие) позволяет вам ссылаться на псевдонимы, прежде чем вы их определяете, а затем, пока вы их определяете, тогда все в порядке? Просто некоторые основные вопросы MySQL. Опять же, ваше решение отлично поработало. – drewrockshard
Да, таблица t или таблица как t одинаковы. На самом деле я не знаю, как mysql анализирует запрос, но, конечно же, он ищет (а также SQL Server работает таким образом), как и раньше, перед выражением выбора интерпретатора, иначе это не сработает. Я уверен, что кто-то еще может объяснить, что намного лучше, чем мне – Dalen