2011-07-07 9 views
0

私はこのようなサブクエリのように行っているが、それは誤りにメインクエリでサブクエリを使用して

    SELECT 
       sourceTable3.Total, 
       (sourcetable3.datediff-1) as diff, 
      ADDDATE(ADDDATE(NOW(), INTERVAL FLOOR(diff) MONTH), INTERVAL DAY(NOW()) -   memberToMship_DueDay DAY) As expdate, 
       ExpPayments, 
      MonthlyAmount, 
      SourceTable3.ExpPayments2, 
      FROM 
      (
      SELECT 
       SourceTable2.Total, 
      (SourceTable2.datdiff-1) as diff, 
      SourceTable2.datdiff,     
      ExpPayments, 
      MonthlyAmount, 
      SourceTable2.ExpPayments2, 
      member_Id 
      FROM 
      (
      SELECT 
       SourceTable.Total, 
       ceil(SourceTable.ExpPayments-SourceTable.Total) AS datdiff,     
       SourceTable.ExpPayments, 
       SourceTable.MonthlyAmount, 
      (SourceTable.Total/SourceTable.MonthlyAmount) as ExpPayments2, 
       SourceTable.member_Id 
      FROM 
      ( 
       SELECT       TIMESTAMPDIFF(MONTH,memberToMship_StartDate,memberToMship_EndDate)*  memberToMship_ChargePerPeriod As Total,  
DATEDIFF(GREATEST(NOW(),memberToMship_DueDay),memberToMship_StartDate)/30 AS ExpPayments, 
30* memberToMship_ChargePerPeriod/DATEDIFF(memberToMship_EndDate,memberToMship_StartDate) AS MonthlyAmount, 
member_Id 
      FROM 
      membertomships 
     ) as SourceTable 
    ) as SourceTable2 
) as sourceTable3 

を与えていたが、それはこのようなエラーを与えていた...

      Error Code: 1054 
         Unknown column 'sourcetable3.datediff' in 'field list' 

は、いずれかのPLSのに役立つだろう。 ..

変更したコード:

修正 'E' と、この

012のようなエラーが発生しました

エラーコード:1054 'フィールドリスト'

変更されたコードで 不明な列 'memberTo_Mship_DueDay':

は、これが私のテーブル構造

       membership table 
           memberToMship_Id 
          memberToMship_StartDate 
          memberToMship_EndDate 
          memberToMship_DueDay 
          member_Id 

         I want finally these columns expdate , diff , ExpPayments, 
      MonthlyAmount, 





      MODIFIED CODE : 




       SELECT 
      SourceTable3.Total, 

      ADDDATE(ADDDATE(NOW(), INTERVAL FLOOR(diff) MONTH), INTERVAL DAY(NOW()) -   memberToMship_DueDay DAY) As expdate, 
      (Sourcetable3.datdiff-1) as diff, 
     ExpPayments, 
      MonthlyAmount, 
      SourceTable3.ExpPayments2, 
      SourceTable3.member_Id 
      FROM 
      (
       SELECT 
      SourceTable2.Total, 
      (SourceTable2.datdiff-1) as diff, 
      SourceTable2.datdiff,     
      ExpPayments, 
      MonthlyAmount, 
      SourceTable2.ExpPayments2, 
      member_Id 
       FROM 
       (
         SELECT 
       SourceTable.Total, 
       ceil(SourceTable.ExpPayments-SourceTable.Total) AS datdiff,     
       SourceTable.ExpPayments, 
       SourceTable.MonthlyAmount, 
       (SourceTable.Total/SourceTable.MonthlyAmount) as ExpPayments2, 
       SourceTable.member_Id 

       FROM 
       ( 
       SELECT TIMESTAMPDIFF(MONTH,memberToMship_StartDate,memberToMship_EndDate)*  memberToMship_ChargePerPeriod As Total,  
        DATEDIFF(GREATEST(NOW(),memberToMship_DueDay),memberToMship_StartDate)/30 AS ExpPayments, 
      30* memberToMship_ChargePerPeriod/     DATEDIFF(memberToMship_EndDate,memberToMship_StartDate) AS MonthlyAmount, 
member_Id 
      FROM 
      membertomships 
     ) as SourceTable 
     ) as SourceTable2 
    ) as SourceTable3 

とエラーになり

     Error Code: 1054 
         Unknown column 'memberToMship_DueDay' in 'field list' 

いずれかのplsが助けるでしょう...

+0

ああ、私はこれらのフィールドのようなmemberTomshipテーブルの列memberTo_Mship_DueDayを持っているwonk0 ... memberToMship_EndDate、memberToMship_StartDate – wonk0

+0

をチェックし、上に来ていますあなたは問題が残っていますので、望む結果をあなたのテーブルのスクリーンショットに付けてください。 – user682417

+0

@ user682417 @あなたのテーブル – rahularyansharma

答えて

1
SELECT 
     SourceTable2.Total, 
     ADDDATE(ADDDATE(NOW(), INTERVAL FLOOR(diff) MONTH), INTERVAL DAY(NOW()) -memberToMship_DueDay DAY) As expdate, 
     datdiff, 
     diff, 
     SourceTable2.ExpPayments, 
     SourceTable2.MonthlyAmount, 
     (SourceTable2.Total/SourceTable2.MonthlyAmount) as ExpPayments2, 
     SourceTable2.expdate, 
     SourceTable2.member_Id 
FROM 
( 
    SELECT 
     memberToMship_DueDay, 
     SourceTable.Total, 
     SourceTable.expdate 
     ceil(SourceTable.ExpPayments-SourceTable.Total) AS datdiff, 
     ceil(SourceTable.ExpPayments-SourceTable.Total) -1 As diff, 
     SourceTable.ExpPayments, 
     SourceTable.MonthlyAmount, 
     (SourceTable.Total/SourceTable.MonthlyAmount) as ExpPayments2, 
     SourceTable.expdate, 
     SourceTable.member_Id 
    FROM 
    ( 
     SELECT 
      memberToMship_DueDay, 
      TIMESTAMPDIFF(MONTH,memberToMship_StartDate,memberToMship_EndDate)*memberToMship_ChargePerPeriod As Total, 
      DATEDIFF(GREATEST(NOW(),memberToMship_DueDay),memberToMship_StartDate)/30 AS ExpPayments, 
      30* memberToMship_ChargePerPeriod /DATEDIFF(memberToMship_EndDate,memberToMship_StartDate) AS MonthlyAmount, 
      member_Id 
     FROM membertomships 
    ) as SourceTable 
) as SourceTable2 
+0

エラーコード:1054 'フィールドリスト'に 'diff'という不明な列があります。これはエラーです... – user682417

+0

上記の編集を参照してください... – StevieG

+0

thanq stevie Gその仕事は今... – user682417

2

datediffからeを削除する必要があると思いますので、sourcetable3.datdiffになります。

+0

ya私はそれを削除しましたが、このようなエラーが出ました...エラーコード:1054。'field list'の 'memberToMship_DueDay'列が不明です – user682417

+0

@ user682417:あなたの参照している実際の表とあなたの列のスペルを確認します。 –

+0

ここに問題がありますsourceTable3.Total、 (diff)、 (ADDATE(NOW、INTERVAL FLOOR(diff)MONTH)、INTERVAL DAY(NOW()) - memberToMship_DueDay DAY)expdate 、memberToMship_DueDayはフィールドリストにありません – user682417

1

あなたはSourceTable3のために異なるケースを使用しています

sourceTable3.Total,
(sourcetable3.datediff-1) as diff,
SourceTable3.ExpPayments2,
) as sourceTable3

あなたがLinux上である場合は、SourceTable3にそれらのすべてを変更してみてください。 Identifier Case Sensitivityを参照してください。

ceil(SourceTable.ExpPayments-SourceTable.Total) AS datdiff, 
              -----------^^----- 

しかし、それは予約MySQLのキーワードであるので、あなたがバッククォートでdatediffを囲む必要があります:あなたは、その列が特定されたラインのタイプミスを持っているよう

0

が見えます。

ceil(SourceTable.ExpPayments-SourceTable.Total) AS `datediff`, 
+0

これも良いですが、今の私はこのような別のエラーがあります...エラーコード:1054 'フィールドリスト'の 'memberToMship_DueDay'列が不明です – user682417

0

このエラーメッセージのどの部分に問題がありますか? sourcetable3にDATEDIFFという名前の列が単にありません、それはdatdiff

+0

エラーコード:1054不明な列 'memberTo_Mship_DueDay 'in'フィールドのリストこれはエラーです – user682417

+0

@ user682417実際の表とのスペルを確認してください。また、同じケースを使用していることを確認してください。 Linuxの場合は、列名と表名で大文字と小文字が区別されます。 –

+0

私はlinuxを使用していません..私はC#phpとmysqlを使用しています... – user682417

関連する問題