我有一个表书籍,我在那里存放图书资料(国际标准书号的,标题,作者等)。要知道哪些书是对方的版本,我有一个字段版本_组_ISBN,它是组中的任意ISBN。左连接不工作(MySQL的)
我无法得到这个查询,这是为了把书数据并根据ISBN其他版本的数量,工作:
SELECT *, Editions_Count
FROM Books
LEFT JOIN ((SELECT Edition_Group_ISBN, COUNT(*) AS Editions_Count
FROM Books
WHERE Edition_Group_ISBN IN (SELECT Edition_Group_ISBN
FROM Books)
GROUP BY Edition_Group_ISBN) AS b
) ON (Books.Edition_Group_ISBN = b.Edition_Group_ISBN
AND Books.Edition_Group_ISBN != NULL)
WHERE ISBN = 9780140447897
查询给书数据9780140447897 ,但它给出了Editions_Count AS NULL,表明LEFT JOIN不起作用。
我认为你需要另一个表来跟踪版本分组;使用一个任意的国际标准书号来做它为我敲响警钟。 – staticsan 2010-07-27 00:19:59
@staticsan我确实觉得用这种方式存储它有点奇怪,但实际的缺点是什么? – babonk 2010-07-27 00:27:47
有利的一面是: 1-它的方式更容易地装入数据到数据库中。这将是一个独特的ID更难 2它节省了一点的数据库空间 – babonk 2010-07-27 00:42:03