Mysql
 sql >> база данни >  >> RDS >> Mysql

Propel:избиране на колони от таблици за свързване с псевдоним

Правя малко проучване, след като прочетох коментара на jchamberlain относно where caluse под неговия отговор и стигнах до заключението, че

  • винаги трябва да използвате 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony3 - SQLSTATE[HY000] [2002] Няма такъв файл или директория

  2. Базата данни не е конфигурирана laravel по време на миграция

  3. Намерете дублиращи се низове в базата данни

  4. Оптимизирайте MySQL UPDATE заявка, която съдържа WHERE и ORDER BY?

  5. Използвайте SparkSession.sql() с JDBC