我有以下表格:
branchInfo (brID, brName)
MotherBoard (ComputerID, Manufacturer, Product, SerialNumber)
Computers (ComputerID, LatestIP, brID)
CPU (ComputerID, NumberOfCores, ClockSpeed)
OS (ComputerID, MemorySize)
Disk (ComputerID, MemorySize)
Network (LatestIP, ipSubnet)
并希望.csv导出(brName,制造商,产品,SerialNumber,LatestIP,ipSubnet,NumberOfCores,ClockSpeed,MemorySize,MemorySize)字段 请帮我写一下sql代码
答案 0 :(得分:0)
您要做的事情称为联接。您可以通过同时从多个表中选择来在SQL中连接多个表。当您想从一个表中获取信息时,您必须告诉SQL表格的相关性。作为连接两个表的基本模式,您可以告诉SQL两个表来选择,然后如何连接它们。例如,如果您有两个非常简单的表dogLicence
和dogAge
,并且这些表分别包含(名称,许可证号)和(名称,年龄),代码SELECT * from dogLicence, dogAge
将为您提供狗年龄和许可证号码的所有组合。因此,您需要WHERE
子句。如果你说SELECT * from dogLicence, dogAge WHERE dogLicence.name = dogAge.name
,你只会选择一只狗,你会得到它的名字,许可证号码是一个年龄。当然,将名称作为主键这样的做法是不好的做法,但我们只是假装它是为了简单起见。最后,您可以在选择表时使用表格的简写。如果您编写SELECT * from dogLicencse s
,现在可以在该语句的其余部分将该表称为“s”。考虑到所有这些,您的查询将如下所示:
SELECT brname, Manufacturer, Product, SerialNumber, LatestIP, ipSubnet, NumberOfCores, ClockSpeed, MemorySize, MemorySize
FROM branchInfo br, Motherboard m, Computers c, CPU cpu, OS o, Disk d, network N
WHERE b.brID = c.brID
AND m.ComputerID = c.ComputerID
AND o.ComputerID = c.ComputerID
AND d.ComputerID = c.ComputerID
AND n.ComputerID = c.ComputerID
and cpu.ComputerID = c.ComputerID
AND c.LatestIP = n.LatestIP;