2013-09-05 44 views
0

良好的一天,每一個 我有三個MySQL表MySQL查詢排序在JOIN表

-doc

-DocType

-Org

我做了一個這樣的查詢:

選擇 Doc.Code,Doc.DataAcce PT,DocTypes.Name,Org.Name

文檔,文檔類型,組織

Doc.Type = DocTypes.Code AND Doc.Org = Org.Code AND督。碼;

的結果,我有

|碼| DataAccept |名稱|名稱|

17 | - | - | - | 

18 | - | - | - | 

24 | - | - | - | 

26 | - | - | - | 

32 | - | - | - | 

的代碼字段是不是在一系列

如果作出查詢像

選擇 Doc.Code,Doc.DataAccept,DocTypes.Name,Org.Name

Doc,DocTypes,Org

Doc.Type = DocTypes.Code AND Doc.Org = Org.Code AND Doc.Code AND Doc.Code < 100;

比它的確定

|碼| DataAccept |名稱|名稱|

1 | - | - | - | 

2 | - | - | - | 

3 | - | - | - | 

4 | - | - | - | 

5 | - | - | - | 

如果Doc.Code < 1000不是再次它不是在一系列 我嘗試使用ORDER BY代碼

選擇 Doc.Code,Doc.DataAccept,DocTypes.Name,組織。名稱

文檔,文檔類型,組織

其中 Doc.Type = DocTypes.Code AND Doc.Org = Org.Code Doc.Code Doc.Code

ORDER BY代碼DESC;

選擇 Doc.Code,Doc.DataAccept,DocTypes.Name,Org.Name

文檔,文檔類型,組織

哪裏 Doc.Type = DocTypes.Code AND Doc.Org = Or g.Code Doc.Code Doc.Code

ORDER BY代碼ASC;

但結果我已下令不串聯

我做了什麼在這裏失蹤?

謝謝您的時間,並原諒我的英語

「 - 」 - 這是一個正常的數據,使用它只是代表。

+1

如果沒有'ORDER BY',你永遠不能相信一個select的排序。 'ORDER BY Code'不起作用?給我們一個使用'ORDER BY Code'命令的例子。 – Rik

+0

我看到你也有'DocTypes.Code'除了'Doc.Code'。所以你可以嘗試'ORDER BY Doc.Code'。 (或者像@artmees sugests'ORDER BY 1') – Rik

+0

是的,謝謝你的回覆命令1正在工作 – user1722669

回答

0
SELECT Doc.Code,Doc.DataAccept,DocTypes.Name,Org.Name 

FROM Doc LEFT OUTER JOIN DocTypes JOIN Org 

ON Doc.Type=DocTypes.Code AND Doc.Org=Org.Code; 

WHERE Doc.Code < 1000 ; 

ORDER BY 1 

explanation可能是有用的。

+0

對我來說,工作解決方案是將訂單加1加到我的查詢中 謝謝 並感謝您的解釋鏈接 – user1722669

+0

看起來我的問題是我有DocTypes.Code和Doc.Code,就像Rik說的那樣。所以ORDER BY Doc.Code正常工作。 – user1722669