我需要帮助来构建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"应该以某种方式标记。结果应该是这样的:
感谢您的帮助。
谢谢!
答案 0 :(得分:1)
如果您想要所有计算机,请从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小提琴。