mySQL结合表查询数据

时间:2014-12-14 23:50:03

标签: php mysql

只是做了一些mySQL问题并且已经找到了除最后一个之外的所有问题(当然)。

我有两张桌子。

提出的问题是“写一个查询,以返回与任何城市居住在同一城市的所有作者的列表 出版商“。

道歉,因为我不允许发布图片。但是很容易弄清楚它的价值标题。我在前几个中添加了逗号以将它们分开,以便您了解一般工作原理。

发布商表

PUB_ID PUB_NAME CITY STATE COUNTRY
0736 New Moon, Palo Alto, CA, USA
0877 Binnet & Hardley, Washington, DC, USA
1389 Algodata, Berkeley, CA, USA
1622 Five Lakes, Chicago, IL, USA
1756 Ramona Publishers Oakland CA USA
9901 GGG&G Munich NULL NULL
9952 Scootney Books New York NY USA
9999 Lucerne Publishing Paris NULL France

作者表

AU_ID LNAME FNAME PHONE ADDRESS CITY STATE CONTRACT
172 White Johnson, 496-7223, 10932 Bigge Rd Menlo Park, CA 1
213 Green Marjorie, 986-7020, 309 63rd St. Oakland, CA 2
238 Carson Cheryl, 548-7723, 589 Darwin Ln, Berkeley, CA 1
267 O‟Leary Michael 286-2428 22 Cleveland Av San Jose CA 1
274 Straight Dean 834-2919 5420 College Av Oakland CA 2

我知道我必须使用内部联接声明,但是如何做到这一点并且与出版商生活在同一个城市的作者相匹配让我感到困惑。

1 个答案:

答案 0 :(得分:6)

SELECT a.*
FROM Authors AS a
JOIN (SELECT DISTINCT city, state
      FROM Publishers) AS p
ON a.city = p.city AND a.state = p.state
如果作者在其所在城市有多个发布商,则

DISTINCT会阻止其为作者生成多个结果。

您也可以使用相关子查询来执行此操作:

SELECT *
FROM Authors AS a
WHERE EXISTS (SELECT *
              FROM Publishers AS p
              WHERE p.city = a.city AND p.state = a.state)