помогите отыскать ошибку в "SQL - запросе друпал"

Главные вкладки

Аватар пользователя andron81_81 andron81_81 26 января 2013 в 18:25

не пойму как мне составить элементарный на языке друпал. запрос такой

SELECT count(*) FROM affiliate_users_ids WHERE UCASE(text_id)=UCASE($Var)

вместо $Var надо подставить выражение: $textid_primay_part . $textid_cnt . $textid_secondary_part
.вот пытаюсь вот так :

<?php
db_select
('affiliate_users_ids')
  ->
countQuery()
  ->
where('UCASE(text_id)=UCASE(:txt)', array(':txt' => $textid_primay_part $textid_cnt $textid_secondary_part))
  ->
execute()
  ->
fetchField()
?>

во что пишет :
PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'text_id' in 'where clause': SELECT COUNT(*) AS expression FROM (SELECT 1 AS expression FROM {affiliate_users_ids} affiliate_users_ids) subquery WHERE (UCASE(text_id)=UCASE(:txt)) ; Array ( [:txt] => OL1012613 ) в функции gaa_createUserTextID() (строка 14 в файле /usr/www/users/webmisq/drupal/sites/all/modules/gaa_user_sinhronaze/gaa_user_sinhronaze.module).

то бишь не находит text_id в табличке affiliate_users_ids. но она то там есть.

Комментарии

Аватар пользователя andron81_81 andron81_81 26 января 2013 в 20:29

нда, только так вышло :

<?php
$count
=(db_select('affiliate_users_ids','a')
->
fields('a', array('text_id'))
 ->
where('UCASE(a.text_id)=UCASE(:txt)', array(':txt' => $textid_primay_part $textid_cnt $textid_secondary_part))
  ->
execute()->rowCount())
?>
Аватар пользователя andron81_81 andron81_81 28 января 2013 в 9:20

Chyvakoff wrote:
В селектах всегда нужно указывать псевдонимы таблиц.

точно не помню, но я много чего перепробовал.

<?php
db_select
('affiliate_users_ids','a')
  ->
countQuery()
  ->
where('UCASE(a.text_id)=UCASE(:txt)', array(':txt' => $textid_primay_part $textid_cnt $textid_secondary_part))
  ->
execute()
  ->
fetchField()
?>

но вроде тоже не помогало. проблема решена (выше), конечно, но решение хуже, чем если бы использовал countQuery().