我需要帮助来构建一个SQL语句。 Database-Schema看起来像这样: Database-Schema
我确实准备了以下SQL-Fiddle,它包含样本数据:http://sqlfiddle.com/#!9/528a4e/1
要求#1: 我想从表“计算机”中获取所有计算机。 SQL语句看起来像这样:
SELECT ComputerID, ComputerName
FROM computers
要求#2: 我想让所有计算机映射到PrinterID = 1的打印机.SQL语句看起来像这样:
SELECT computermapping.ComputerID, computers.ComputerName
FROM computermapping
JOIN computers ON computermapping.ComputerID = computers.ComputerID
JOIN Printers ON computermapping.PrinterID = printers.PrinterID
WHERE computermapping.PrinterID = 1
要求#3: 到现在为止还挺好。现在我需要更复杂的东西。我想加入booth查询的结果,以获得一个独特的计算机列表。那些由“要求#2”选择的计算机应该以某种方式标记。结果应该是这样的:
我感谢您的帮助。
谢谢!
如果你想要所有的电脑,请从left join
开始:
SELECT c.ComputerID, c.ComputerName,
( cm.ComputerId IS NOT NULL) as hasPrinterFlag
FROM computers c LEFT JOIN
computermapping cm
ON cm.ComputerID = c.ComputerID AND cm.PrinterID = 1 ;
在你的情况下,我认为你不需要Printers
表。所有信息似乎都在computermapping
中(除非打印机可能在映射表中,但不在Printers
表中,这似乎不太可能)。
Here是SQL小提琴。