2013-06-19 36 views
-3
SELECT 
* 
FROM dvcam 

LEFT JOIN format AS format1 ON 
dvcam.ID_Format=format.ID_Format, 

originaltape 
LEFT JOIN format AS format2 ON 
originaltape.RO_Format=format.ID_Format 

任何人都可以帮助我吗?2左连接指向1表

格式包含ID_Format和格式,其中保存的名称(DVD,VHS等)

我需要证明从DVCAM表和originaltape格式(名称)

+2

originaltape和dvcam有什么关系? –

+1

originaltape如何加入dvcam? – mbeckish

回答

0

快速猜测:

SELECT 
* 
FROM dvcam 
LEFT JOIN format AS format1 ON 
dvcam.ID_Format=format1.ID_Format, 

originaltape 
LEFT JOIN format AS format2 ON 
originaltape.RO_Format=format2.ID_Format 
+0

这看起来与OP中的查询完全相同。 –

+2

不,他搞砸了别名,但是还有更多的错误。 –

0

您需要删除,后先加入,在on条文修正别名:

SELECT * 
FROM dvcam left join 
    format AS format1 
    ON dvcam.ID_Format=format1.ID_Format left join 
    originaltape left join 
    format AS format2 
    ON originaltape.RO_Format=format2.ID_Format 
+0

在mysql和php中,需要..例如FROM dvcam,演员,评论WHERE bla bla bla ..感谢您的帮助 – Musikdoktor

+0

@Musikdoktor。 。 。逗号是'from子句'中'cross join'的同义词。只有在不使用正确的连接语法时才会使用它。此查询使用正确的连接语法,因此','应该导致语法错误。 –

+0

@Musikdoktor,不需要逗号,并且使用它是缺乏数据库编程原理知识的一个标志。它是一个隐式连接,在任何情况下都不应该使用,因为它们是SQL反模式。特别是,您不应该将它们与左连接等显式连接一起使用,否则您将遇到麻烦,就像您找到的那样。既然你没有原始磁带的where子句,看起来你需要一个交叉连接?如果不是,那么taht就是你的问题的一部分,因为这肯定是你写的,这是使用隐式连接的常见问题。 – HLGEM

0

您需要更多地解释和您使用的数据库(甲骨文,SQL服务器,MySQL ...等)

编辑: 你需要定义DVCAM和originaltape之间的关系,一个加盟像如果dvcam与originaltape的关系不是1-1,那么你拥有的那个将不起作用。在另一方面,如果是1-1,那么你可以做这样的事情

Select * 
from 
    (SELECT * 
    FROM dvcam inner join 
     format as f1 
    /*assuming every record has a format field */ 
    on dvcam.id_format =f1.id_format) dv inner join 
    (SELECT * 
    FROM originaltape inner join 
     format as f2 
    /*assuming every record has a format field */ 
    on originaltape.id_format =f2.id_format) ot 
    on dv.?? = ot.?? 

HTH 贾法尔

+0

我在php上通过mysql进行查询。感谢您的帮助 – Musikdoktor

+0

正如HLGEM和Gordon指出的那样,我不确定您发布的帖子是否会给您提供正确的数据。您的加入无效。仔细检查你的数据 –

0

你可以试试这个,它应该在任何数据库上的作品:

SELECT 
* 
FROM dvcam 
LEFT JOIN format AS format1 ON 
dvcam.ID_Format=format1.ID_Format 
LEFT JOIN originaltape ON 
originaltape.RO_Format=format1.ID_Format 
-3

这是我做的..现在它的工作..

SELECT dvcam.*, format.Format AS Format, Format2.Format AS Format2 

FROM 
dvcam 
LEFT JOIN format ON 
dvcam.ID_Format=format.ID_Format, 

originaltape 
LEFT JOIN format AS format2 ON 
originaltape.RO_Format=format2.ID_Format 

感谢您的所有帮助和时间..