Например, строение таблиц такое:
db_cpu: name | db_motherboard: name | db_socket: socket (AM3, 775, 1156...)
socket socket
money money
Как связать таблицы db_cpu,db_motherboard,db_socket так чтобы запрос шел только к db_socket, а выбирались данные из двух других таблиц.
P.s. В таблице db_socket будут содержаться названия сокетов для cpu (AM2, AM3, 775, 1155, 1156, 1366 ...).
Спустя 4 минуты, 11 секунд (9.04.2011 - 15:33) neadekvat написал(а):
Условие непонятно. Если вы не укажите, что выборку нужно делать из двух таблиц, то это само по себе не произойдет. Поэтому надо четко понимать, по каким полям будут связываться таблицы.
Спустя 2 минуты, 17 секунд (9.04.2011 - 15:36) minok94 написал(а):
Связь будет по полю socket, т. е. если нам нужны комплектующие ПК на платформе AMD с сокетом AM3, то в результате выводится должны только совместимые комплектующие.
Спустя 5 минут, 15 секунд (9.04.2011 - 15:41) neadekvat написал(а):
Что-то типа того
Правда, у вас поля повторяются - конфликт, по сути. Так что придется назначать свои имена через алиасы:
SELECT t1.*, t2.*, t3.*
FROM `db_socket` t1
LEFT JOIN db_motherboard t2 USING(`socket`)
LEFT JOIN db_cpu t3 USING(`socket`)
WHERE t1.socket = 775
Правда, у вас поля повторяются - конфликт, по сути. Так что придется назначать свои имена через алиасы:
SELECT t2.name as mother_name...