MySQL Left join (я думаю) поможет - PullRequest
1 голос
/ 02 сентября 2011

У меня возникли проблемы с выбором правильной строки в таблице, если указанная таблица является реляционной. Две таблицы показаны ниже.

таблица web_quote_models

id | model       | product_id | cpu_id | ram_id | hdd_id | os_id | opt_id 
=========================================================================
1  | 000001      | 1          | 1      | 1      | 1      | 1     | 1
2  | 000002      | 1          | 2      | 2      | 2      | 2     | 2
3  | 000003      | 1          | 3      | 3      | 3      | 3     | 3
4  | Custom      | 0          | 0      | 3      | 4      | 4     | 4

таблица web_quote_component_cpu

id | name
=========================================================================
1  | Intel® Core™ i3 2100 3.1GHz dual-core
2  | Intel® Core™ i5 2500 2.7GHz quad-core        
3  | Intel® Core%trade; i7 2600 3.4GHz 8mb Cache dual-core

Итак, мне нужно выполнить запрос, который будет искать внутри таблицы web_quote_models и сопоставлять поле модели с $ _SESSION ['model'], а затем сопоставлять поле web_quote_models.cpu_id с web_quote_component.id.

Это то, что я имею до сих пор; Я не могу быть слишком далеко, я думаю.

("
 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 ON web_quote_component_cpu.id='web_quote_models.cpu_id'
 AND web_quote_models.name='".$_SESSION['model']."'
");

Огромное спасибо заранее всем, кто помогает.

Dan.

1 Ответ

1 голос
/ 02 сентября 2011

Я не думаю, что ты совсем далеко.Я считаю, что все, что вам нужно сделать, это прекратить цитировать web_quote_models.cpu_id:

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 -- note lack of quotes in the following line:
 ON web_quote_component_cpu.id=web_quote_models.cpu_id
 AND web_quote_models.name='".$_SESSION['model']."'

Редактировать

На основании комментария я бы лично переписал запрос:

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu WHERE ID IN
 ( SELECT ID FROM WEB_QUOTE_MODELS WHERE 
   web_quote_models.name='".$_SESSION['model']."' );

Хотя я бы подозревал, что замены последнего AND на WHERE будет достаточно:

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 -- note lack of quotes in the following line:
 ON web_quote_component_cpu.id=web_quote_models.cpu_id
 WHERE web_quote_models.name='".$_SESSION['model']."'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...