2017-12-12 6 views
0

私はGUIのgirdとSQLで作業しています。私は、ユーザーが情報を望む順序に応じてクリックできる2つのGUIボタンを持っています。従業員Last_nameまたはFirst_nameで注文できますが、両方ではありません。私はどのようにそれを使用するか分からない。私は連結を使用すると仮定していますが、どのようにするか分からない。以下はORDER BYをSQLで連結する方法

は私がしようとしたものです:私は唯一のエントリにしている場合

def sort_employees(self, column): 
    try: 
     cursor = db.cursor() 
     display="SELECT * FROM company ORDER BY '%" + column + "%' " 
     cursor.execute(display) 
     entry = cursor.fetchall() 
     self.display_rows(entry) 

はまた、コードが正常に動作します:あなたは、クエリ文字列に%を持っている理由

display="SELECT * FROM company ORDER BY Last_name" 
+1

なぜ「%」+列+「%」で「+列+ LIKEステートメントで最も頻繁に使用されるワイルドカード文字ホルダーです。 – aallord

答えて

0

わかりません、 %s syntax for string formattingと混同している可能性があります。

display = "SELECT * FROM company ORDER BY '%" + column + "%' " 

より多くのこのようなものです、あなたが何をしたいようだ:私は好むよう

display = "SELECT * FROM company ORDER BY " + column 

または、:もちろん

display = 'SELECT * FROM company ORDER BY {column}'.format(column=column) 

このようなクエリを作成するように注意してください、あなたが露出していますSQLセキュリティの脆弱性

文字列補間/連結の代わりにパラメトリッククエリを使用することをお勧めしますが、使用しているデータベースインターフェイスはわかりませんが、ドキュメントを検索することで簡単に見つけることができます。整数序を入れて、いくつかのDBに

--correct, sort names beginning with a Z first 
ORDER BY CASE WHEN first name LIKE 'Z%' THEN 1 ELSE 2 END, firstname 

:それはまた、関数の出力を取ることができます

--correct 
ORDER BY firstname, lastname, age 

SQLで
0

ORDER BY句は、引数として、列名のリストを取り1から始まる左から番号が付けられた列を並べ替えます。

--correct, sort by 3rd column then first 
ORDER BY 3,1 

It d

--incorrect - not necessarily a syntax error but will not sort by any named column 
ORDER BY 'firstname', 'lastname', 'age' 

また、それは、CSVの列名の文字列を取るん:OES列名が含まれているために起こる文字列のリストを取ることはありませ

--incorrect - again not necessarily a syntax error but won't sort on any of the named columns 
ORDER BY 'firstname, lastname, age' 

あなたのコードでは、後者のカテゴリに分類されます。あなたがしています列名を文字列に変換します。これは間違っています。 "not working sql"と "working sql"は非常に異なっています。コードから見て苦労している場合は、彼の連結結果を画面に表示して見てください。

関連する問題