sql >> Database teknologi >  >> RDS >> Mysql

Fremdriv:valg af kolonner fra aliasede jointabeller

Jeg laver en lille research efter at jeg har læst jchamberlains kommentar om where caluse under hans svar, og jeg kom til den konklusion, at

  • du skal altid bruge UpperCamelCase stil, når du skriver kolonnenavne i fremdriftsfunktioner, selvom det nogle gange fungerer fint, hvis du ikke bruger denne stil
  • løsning afhænger af Propel-version

Sandsynligvis er der ingen løsning til Propel <=1.6.7 (eller måske er rå SQL-forespørgsel den eneste løsning), for uanset hvor meget jeg prøver ender jeg altid med Cannot fetch ColumnMap for undefined column: ID_TABLE_B Fremdriv undtagelse.

For Propel>=1.6.8 vil dette virke:

Hvis du har brug for array med aliasede kolonner som resultat

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();

Hvis du har brug for objekter med virtuelle kolonner fra aliasede kolonner

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. Oprettelse og sletning af en PostgreSQL-database på Ubuntu 16.04

  2. hvordan trimmer jeg en e-mail-input-adresse, så kun dataene før @ er indlæst i databasen?

  3. mysql NULL værdi i hvor i CLAUSE

  4. Vælg procentdel af rækker fra SQL-tabel?