mysql - 尝试加入多个表

标签 mysql database join view

Tables And what i need 我正在尝试为学校项目创建一个包含 5 个表的 View 。到目前为止的声明是这样的:

CREATE view lager AS 
Select produkt.produktNumber,
(SELECT buyphone.lagerNummer FROM bluecity.buyphone) AS 'Lagernummer',
produkt.produktBrand,
produkt.produktModel,
sizeMemory.memoryInformation,
(SELECT buyphone.colorValue FROM bluecity.buyphone) AS 'Farve',
(SELECT buyphone.conditionValue FROM bluecity.buyphone) AS 'Stand'
FROM bluecity.produkt
JOIN bluecity.sizememory ON bluecity.produkt.memorySize = bluecity.sizememory.memorySize
JOIN bluecity.color ON buyphone.colorValue = bluecity.color.colorInformation
JOIN bluecity.conditions ON buyphone.conditionValue = bluecity.conditions.conditionInformation

但我似乎无法正确连接。主表 bluecity.produkt 需要将其一些值与其他表连接起来。第一个与内存大小的连接有效,但仅此而已。主表应该保存一个整数值,如果有意义的话,它会从连接表中获取含义。

非常感谢您的帮助,如果您能解释一下原因和方式,那就更好了,这样我就可以尝试理解。

添加了创建stmt

CREATE DATABASE bluecity;


CREATE TABLE bluecity.Member 
(memberNumber INTEGER(5) NOT NULL,
firstName VARCHAR(50) NOT NULL,
lastName VARCHAR(25) NOT NULL,
address VARCHAR(40) NOT NULL,
zipNumber INTEGER(4) NOT NULL,
phoneNumber INTEGER(8) NOT NULL,
email VARCHAR(35) NOT NULL,
statusValue INTEGER(1) NOT NULL,
FOREIGN KEY (zipNumber) REFERENCES bluecity.zipCode(zipNumber),
FOREIGN KEY (statusValue) REFERENCES bluecity.ID(statusValue),
PRIMARY KEY (memberNumber));

CREATE TABLE bluecity.ID 
(statusValue INTEGER(1) NOT NULL,
information VARCHAR(19) NOT NULL,
PRIMARY KEY (statusValue))



CREATE TABLE bluecity.zipCode 
(zipNumber INTEGER(4) NOT NULL,
city VARCHAR(32) NOT NULL,
PRIMARY KEY (zipNumber));

CREATE TABLE bluecity.Produkt 
(produktNumber INTEGER(5) NOT NULL,
produktType VARCHAR(30) NOT NULL,
produktBrand VARCHAR(30) NOT NULL,
produktModel VARCHAR(30) NOT NULL,
memorySize INTEGER(2) NOT NULL,
FOREIGN KEY (memorySize) REFERENCES bluecity.sizeMemory(memorySize),
PRIMARY KEY (produktNumber));

CREATE TABLE bluecity.Conditions 
(conditionValue INTEGER(1) NOT NULL,
conditionInformation VARCHAR(13) NOT NULL,
PRIMARY KEY (conditionValue));

CREATE TABLE bluecity.sizeMemory 
(memorySize INTEGER(1) NOT NULL,
 memoryInformation VARCHAR(5) NOT NULL,
 PRIMARY KEY (memorySize));

CREATE TABLE bluecity.Color 
(colorValue INTEGER(2) NOT NULL,
colorInformation VARCHAR(20) NOT NULL,
PRIMARY KEY (colorValue));

CREATE TABLE bluecity.Prices 
(conditionValue INTEGER(1) NOT NULL,
produktNumber INTEGER(5) NOT NULL,
price INTEGER(6) NOT NULL,
FOREIGN KEY (conditionValue) REFERENCES bluecity.Conditions(conditionValue),
FOREIGN KEY (produktNumber) REFERENCES bluecity.Produkt(produktNumber),
PRIMARY KEY (conditionValue, produktNumber));

CREATE TABLE bluecity.buyPhone 
(IMEI Integer(15) NOT NULL,
lagerNummer INTEGER(7) NOT NULL,
produktNumber INTEGER(5) NOT NULL,
colorValue INTEGER(2) NOT NULL,
conditionValue INTEGER(1) NOT NULL,
FOREIGN KEY (produktNumber) REFERENCES bluecity.Produkt(produktNumber),
FOREIGN KEY (colorValue) REFERENCES bluecity.Color(colorValue),
FOREIGN KEY (conditionValue) REFERENCES bluecity.Conditions(conditionValue), PRIMARY KEY (IMEI));

最佳答案

您还应该在 bluecity.buyphone 上进行联接,而不是将其作为选择中的子查询,因为它与您的 produkt 表相关。 像这样的事情:

Select produkt.produktNumber,
buyphone.lagerNummer AS 'Lagernummer',
produkt.produktBrand,
produkt.produktModel,
sizeMemory.memoryInformation,
buyphone.colorValue AS 'Farve',
buyphone.conditionValue AS 'Stand'
FROM produkt
JOIN buyphone ON buyphone.produktNumber = produkt.produktNumber 
JOIN sizememory ON produkt.memorySize = sizememory.memorySize
JOIN color ON buyphone.colorValue = color.colorInformation
JOIN conditions ON buyphone.conditionValue = conditions.conditionInformation

关于mysql - 尝试加入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176774/

相关文章:

mysql - 获取每个月最常见/最频繁的值

mysql - 如何合并同一个表中的每 2 个连续列

php - 显示我关注的用户的帖子,同时也显示我的帖子

database - Postgis ST_DIstance 查询返回不准确的结果

php - 如何将一个MySql数据库和用户添加到另一个表和用户?

database - Visual Studio 2010 自动化数据库部署

mysql - 为什么 SELECT COUNT() 在我期望每行的计数时返回一个聚合数字?

mysql - 读/写速度是否取决于索引?

php - 如何获取该具体案例的记录?

php - 将MySQL时间戳转换为DAY,然后按MAX排序