sql >> データベース >  >> RDS >> Mysql

Propel:エイリアス結合テーブルから列を選択する

    whereに関するjchamberlainのコメントを読んだ後、少し調べます。 彼の答えの下で落ち着いて、私はその結論に達しました

    • 常にUpperCamelCaseを使用する必要があります 推進関数に列名を入力するときのスタイル。ただし、このスタイルを使用しない場合は正常に機能することがあります
    • 解決策はPropelのバージョンによって異なります

    おそらく、Propel <=1.6.7の解決策はありません(または、生のSQLクエリが唯一の解決策です)。これは、いくら試しても、常にCannot fetch ColumnMap for undefined column: ID_TABLE_B> 例外を推進します。

    Propel> =1.6.8の場合、これは機能します:

    アレイが必要な場合 結果としてエイリアス列を使用

    TableAQuery::create()
      ->useTableBQuery('a')
          // some filters methods
      ->endUse()
      ->useTableBQuery('b')
          // some filters methods
      ->endUse()
      ->select(array('a.Value1', 'b.Value2')) // notice a.value_1 or b.value_2 won't work
      ->find();
    

    オブジェクトが必要な場合 エイリアス列からの仮想列を使用

    TableAQuery::create()
      ->useTableBQuery('a')
          // some filters methods
      ->endUse()
      ->useTableBQuery('b')
          // some filters methods
      ->endUse()
      ->withColumn('a.Value1') // notice a.value_1 won't work
      ->withColumn('b.Value2') // notice b.value_2 won't work
      ->find();
    


    1. MySQLの厳密モードを無効にする必要がありますか?

    2. Oracleでは値が先行ゼロで表示されていません

    3. SQLServerで日付を別のタイムゾーンに変換する

    4. mysqlユーザーが存在するかどうかを確認する