0

私は初心者のプログラマーであり、正しく機能する形式で次のコードを正しくする方法があるかどうか疑問に思っています。(私はいつも構文を台無しにしているようです。)

$query2 = mysql_query("SELECT IF EXISTS EmployeeName, EmployeeNumber, Position,
ManagementTraining1, ManagementTraining2, ManagementTraining3, ManagementTraining4, 
ManagementTraining5, ManagementTraining6, ManagementTraining7 FROM  
managementMeetingAttendance ORDER BY EmployeeNumber") or die(mysql_error());

動的に作成されたテーブルからデータを収集していますが、存在する場合と存在しない場合がある列に対して作成できる「IF EXISTS」ステートメントに似たものがあるかどうか疑問に思っています。

どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

0

いいえ、ありませんが、最初にデータベースに列名を問い合わせることができます:

select column_name from information_schema.columns where table_name=<TABLE>
于 2012-12-12T20:48:30.660 に答える
0

私は mySQL の人ではありませんが、あなたが書いたステートメントの意図がよくわかりません。あなたの意図によっては、効果的な答えがあるかもしれません。

あなたが持っている:

SELECT IF EXISTS EmployeeName, EmployeeNumber, Position,
ManagementTraining1, ManagementTraining2, ManagementTraining3, ManagementTraining4, 
ManagementTraining5, ManagementTraining6, ManagementTraining7 FROM  
managementMeetingAttendance ORDER BY EmployeeNumber

where句がないため、おそらく特定のレコードを探しているわけではなく、「exists」の使用は、テーブルmanagementMeetingAttendanceに少なくとも1つのレコードが含まれているかどうかを単に問い合わせているようです無関係です。

((SELECT Count(*) FROM managementMeetingAttendance) > 0)

テーブルに行が含まれている場合は true に評価され、含まれていない場合は false に評価されます。

ただし、テーブルにリストされている各列が含まれているか含まれていないかを判断する必要がある場合、これはやや複雑になります。

前の回答によると、 information_schema.columns を使用してテーブルに存在する列を取得し、このデータをクエリする必要があります-次のように:

IF EXISTS select 1 from (
    SELECT Column_Name FROM information_schema.columns 
    WHERE table_name = 'managementMeetingAttendance' AND column_name = 'EmployeeName'
) eName AND EXISTS select 1 from (
    SELECT Column_Name FROM information_schema.columns 
    WHERE table_name = 'managementMeetingAttendance' AND column_name = 'EmployeeNumber'
) eNum AND EXISTS select 1 from (
    SELECT Column_Name FROM information_schema.columns 
    WHERE table_name = 'managementMeetingAttendance' AND column_name = 'Position'
) ePos AND EXISTS select 1 from (
    SELECT Column_Name FROM information_schema.columns 
    WHERE table_name = 'managementMeetingAttendance' AND column_name 
        = 'ManagementTraining1'
) eTrng1 AND EXISTS select 1 from (
    etc
于 2012-12-13T03:38:58.200 に答える