MySQL 多个 Table 查询
MySQL Multiple Table Query
符合条件的问题:
如果您能帮助创建满足此条件的 SELECT 语句,我们将不胜感激。我认为正在使用的表格如下。
CREATE TABLE `client` (
`ClientID` varchar(7) NOT NULL,
`ClientName` varchar(45) DEFAULT NULL,
`Street` varchar(100) DEFAULT NULL,
`City` varchar(45) DEFAULT NULL,
`State` char(2) DEFAULT NULL,
`Zip` char(5) DEFAULT NULL,
PRIMARY KEY (`ClientID`)
)
CREATE TABLE `contact` (
`ClientID` varchar(7) NOT NULL,
`ContactName` varchar(45) NOT NULL,
`ContactPhone` char(17) DEFAULT NULL,
`ContactEmail` varchar(45) DEFAULT NULL,
PRIMARY KEY (`ClientID`,`ContactName`),
CONSTRAINT `FK_ClientContact` FOREIGN KEY (`ClientID`) REFERENCES `client` (`ClientID`)
)
这是我目前所知道的。
SELECT ClientName, contact.ContactName, ContactPhone, ContactEmail, count()
FROM client, contact
GROUP BY ClientName, ContactName, ContactPhone, ContactEmail
ORDER BY ClientName;
附加信息:
CREATE TABLE `event_contact` (
`ClientID` varchar(7) NOT NULL,
`ContactName` varchar(45) NOT NULL,
`EventCode` varchar(12) NOT NULL,
PRIMARY KEY (`ClientID`,`ContactName`,`EventCode`),
KEY `FK_EC_Event_idx` (`EventCode`),
CONSTRAINT `FK_EC_Contact` FOREIGN KEY (`ClientID`, `ContactName`) REFERENCES `contact` (`ClientID`, `ContactName`),
CONSTRAINT `FK_EC_Event` FOREIGN KEY (`EventCode`) REFERENCES `events` (`EventCode`)
)
CREATE TABLE `events` (
`EventCode` varchar(12) NOT NULL,
`EventName` varchar(45) NOT NULL,
`Description` varchar(150) DEFAULT NULL,
`EventDate` date DEFAULT NULL,
`StartTime` time DEFAULT NULL,
`EndTime` time DEFAULT NULL,
`Ticket` tinyint(4) DEFAULT NULL,
`VenueID` char(7) NOT NULL,
`ClientID` varchar(7) NOT NULL,
PRIMARY KEY (`EventCode`),
KEY `FK_Events_Venue_idx` (`ClientID`),
KEY `FK_Events_Venue` (`VenueID`),
CONSTRAINT `FK_Events_Client` FOREIGN KEY (`ClientID`) REFERENCES `client` (`ClientID`),
CONSTRAINT `FK_Events_Venue` FOREIGN KEY (`VenueID`) REFERENCES `venue` (`VenueID`)
)
此查询将列出每个客户联系人的详细信息:
SELECT client.ClientName, contact.ContactName, contact.ContactPhone,
contact.ContactEmail
FROM client, contact
WHERE client.ClientID = contact.ClientID
ORDER BY client.ClientName;
需要使用联接来连接两个 table 以获取每个客户的每个联系人。
Group By 不会用于此,因为 Group By 只会 return 每个客户一个联系人。问题指出:"List the details for each client's contacts."
此外,您缺少信息。该问题还询问联系人组织的活动数量。我猜应该是联系人 table 中的另一列,或者可能是另一个 table.
中的信息
下面是使用显式连接的查询。
SELECT client.ClientName, contact.ContactName, contact.ContactPhone,
contact.ContactEmail
FROM CLIENT
INNER JOIN contact ON client.ClientID = contact.ClientID
ORDER BY client.ClientName;
符合条件的问题:
如果您能帮助创建满足此条件的 SELECT 语句,我们将不胜感激。我认为正在使用的表格如下。
CREATE TABLE `client` (
`ClientID` varchar(7) NOT NULL,
`ClientName` varchar(45) DEFAULT NULL,
`Street` varchar(100) DEFAULT NULL,
`City` varchar(45) DEFAULT NULL,
`State` char(2) DEFAULT NULL,
`Zip` char(5) DEFAULT NULL,
PRIMARY KEY (`ClientID`)
)
CREATE TABLE `contact` (
`ClientID` varchar(7) NOT NULL,
`ContactName` varchar(45) NOT NULL,
`ContactPhone` char(17) DEFAULT NULL,
`ContactEmail` varchar(45) DEFAULT NULL,
PRIMARY KEY (`ClientID`,`ContactName`),
CONSTRAINT `FK_ClientContact` FOREIGN KEY (`ClientID`) REFERENCES `client` (`ClientID`)
)
这是我目前所知道的。
SELECT ClientName, contact.ContactName, ContactPhone, ContactEmail, count()
FROM client, contact
GROUP BY ClientName, ContactName, ContactPhone, ContactEmail
ORDER BY ClientName;
附加信息:
CREATE TABLE `event_contact` (
`ClientID` varchar(7) NOT NULL,
`ContactName` varchar(45) NOT NULL,
`EventCode` varchar(12) NOT NULL,
PRIMARY KEY (`ClientID`,`ContactName`,`EventCode`),
KEY `FK_EC_Event_idx` (`EventCode`),
CONSTRAINT `FK_EC_Contact` FOREIGN KEY (`ClientID`, `ContactName`) REFERENCES `contact` (`ClientID`, `ContactName`),
CONSTRAINT `FK_EC_Event` FOREIGN KEY (`EventCode`) REFERENCES `events` (`EventCode`)
)
CREATE TABLE `events` (
`EventCode` varchar(12) NOT NULL,
`EventName` varchar(45) NOT NULL,
`Description` varchar(150) DEFAULT NULL,
`EventDate` date DEFAULT NULL,
`StartTime` time DEFAULT NULL,
`EndTime` time DEFAULT NULL,
`Ticket` tinyint(4) DEFAULT NULL,
`VenueID` char(7) NOT NULL,
`ClientID` varchar(7) NOT NULL,
PRIMARY KEY (`EventCode`),
KEY `FK_Events_Venue_idx` (`ClientID`),
KEY `FK_Events_Venue` (`VenueID`),
CONSTRAINT `FK_Events_Client` FOREIGN KEY (`ClientID`) REFERENCES `client` (`ClientID`),
CONSTRAINT `FK_Events_Venue` FOREIGN KEY (`VenueID`) REFERENCES `venue` (`VenueID`)
)
此查询将列出每个客户联系人的详细信息:
SELECT client.ClientName, contact.ContactName, contact.ContactPhone,
contact.ContactEmail
FROM client, contact
WHERE client.ClientID = contact.ClientID
ORDER BY client.ClientName;
需要使用联接来连接两个 table 以获取每个客户的每个联系人。
Group By 不会用于此,因为 Group By 只会 return 每个客户一个联系人。问题指出:"List the details for each client's contacts."
此外,您缺少信息。该问题还询问联系人组织的活动数量。我猜应该是联系人 table 中的另一列,或者可能是另一个 table.
中的信息下面是使用显式连接的查询。
SELECT client.ClientName, contact.ContactName, contact.ContactPhone,
contact.ContactEmail
FROM CLIENT
INNER JOIN contact ON client.ClientID = contact.ClientID
ORDER BY client.ClientName;