English 中文(简体)
MySQL:多种选择、多个加入?
原标题:MySQL: multiple selects, multiple joins?

我有一套多个表格(概要):

Brand;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id                 | tinyint(10)  | NO   | PRI | NULL    |       |
| name               | varchar(255) | NO   |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

Relations;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id1                | tinyint(10)  | NO   | PRI | NULL    |       |
| id2                | tinyint(10)  | NO   | PRI | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

Country;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id                 | tinyint(10)  | NO   | PRI | NULL    |       |
| name               | varchar(255) | NO   |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

City;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id                 | tinyint(10)  | NO   | PRI | NULL    |       |
| name               | varchar(255) | NO   |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+

每一行都有独特的补贴。 品牌表中的每一行都与一个国家和城市有关系。 这些表格之间的关系存放在关系表中,因此,每个品牌之间的关系表中有两行。

我试图获得某个品牌的品牌、国名和城市名称。 我得以通过个别选择选择选择这些关系,但我的目标是(如果可能的话)在单一询问中这样做。

我能够找到一个关系(国家),但我也想到这个城市:

SELECT Brand.name as brand, Country.name as country
FROM Brand 
LEFT JOIN _relations 
ON Relations.id1 = Brand.id 
INNER JOIN Country 
ON Country.id = Relations.id2 
WHERE Brand.id =  123456 ;

结果:

+-----------+-------------+
| brand     | country     |
+-----------+-------------+
| brandname | countryname |
+-----------+-------------+

我的目标是:

+-----------+-------------+-------------+
| brand     | country     | city        |
+-----------+-------------+-------------+
| brandname | countryname | cityname    |
+-----------+-------------+-------------+

任何人都能够帮助我,或者把我放在正确的方向?

问题回答

Join Relations再次在不同的标题下提出。

与此类似:

SELECT Brand.name as brand, Country.name as country, City.name as city
FROM Brand 
LEFT JOIN Relations ON Relations.id1 = Brand.id 
INNER JOIN Country ON Country.id = Relations.id2 
LEFT JOIN Relations r2 ON r2.id1 = Brand.id
LEFT JOIN City ON City.id = r2.id2
WHERE Brand.id =  123456 ;

基本上,你们会再次加入关系,然后利用这种关系来进入城市。

SELECT Brand.name as brand, Country.name as country, City.Name as City
FROM Brand 
LEFT JOIN _relations relCountry
ON relCountry.id1 = Brand.id 
INNER JOIN Country 
ON Country.id = relCountry.id2 
LEFT JOIN _relations relCity 
ON relCity.id1 = Brand.id 
INNER JOIN City 
ON City.id = relCity.id2 




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签