2013-06-19 102 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 

感謝您的所有幫助和時間..