sql >> Databáze >  >> RDS >> Mysql

Pohánět:výběr sloupců z aliasovaných spojovacích tabulek

Dělám malý průzkum poté, co jsem si přečetl jchamberlainův komentář o where caluse pod jeho odpovědí a došel jsem k závěru, že

  • vždy byste měli používat UpperCamelCase styl při zadávání názvů sloupců ve funkcích propel, i když to někdy funguje dobře, pokud tento styl nepoužíváte
  • řešení závisí na verzi Propel

Pravděpodobně neexistuje žádné řešení pro Propel <=1.6.7 (nebo možná jediným řešením je nezpracovaný SQL dotaz), protože bez ohledu na to, jak moc se snažím, vždy skončím s Cannot fetch ColumnMap for undefined column: ID_TABLE_B Výjimka pohonu.

Pro Propel>=1.6.8 to bude fungovat:

Pokud potřebujete pole výsledkem jsou aliasované sloupce

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

Pokud potřebujete objekty s virtuálními sloupci ze sloupců s aliasem

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. Jak vytvořit funkci přidání přítele / přítele v PHP?

  2. Získejte věk z DOB v MySQL

  3. Podívejte se na mou prezentaci „Optimalizace Microsoft Access pomocí SQL Serveru“.

  4. vytvořit pole z dotazu mysql php