нужен запрос mysql для нескольких флагов под одним столбцом в таблице - PullRequest
1 голос
/ 22 февраля 2012

У меня есть настройки имени таблицы, под этим есть несколько столбцов, но меня интересуют только два столбца: user_preferences_name и user_preferences_status

Примечание: плз в столбце user_preferences_nameЕсть несколько флагов, таких как

user_preferences_name   user_preferences_status     phone_service_id 
    a                         1                          555
    b                         0                          456
    c                         0                          236
    d                         1                          122
    e                         1                          456
    f                         0                          777
    g                         0                          555
    h                         0                          888
    i                         1                          112
    .                         .                           .
    .                         .                           .
    .                         .                           .

, есть много user_preferences_name, которые мне нужны только (a, b, f, q, w) и их соответствующие user_preferences_status (1,1,0,1,0)

Что я делаю, так это то, что я создаю html-форму, в которой есть 5 разных div и в каждом div есть 2 переключателя.для: - если для user_preferences_status == 1 установлен переключатель «enable», в противном случае будет установлено другое отключение для 5 кнопок «dive» и «radio».что я пытаюсь:

class Prefrances extends Zend_Db_Table{

function Get_User_Prefrences($phone_service_id){
    $DB = Zend_Db_Table_Abstract::getDefaultAdapter();
    $select = $DB->select()
         ->from('user_preferences' , array('user_preferences_name','user_preferences_value'))
         ->where('phone_service_id = ?', $phone_service_id)
         ->where('user_preferences_name = ?', 'a')
         ->where('user_preferences_name = ?', 'b')
         ->where('user_preferences_name = ?', 'f')
         ->where('user_preferences_name = ?', 'q')
         ->where('user_preferences_name = ?', 'w');
    return $select;
    }
}

result = no rows я думаю, что моя логика неверна. Можете ли вы подсказать мне, что мне нужно здесь, общий запрос mysql также может быть применим, я изменю его на zend

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

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

SELECT user_preferences_name, user_preferences_value FROM user_preferences 
WHERE
    phone_service_id = $phoneserviceid
    AND user_preferences_name = 'a'
    AND user_preferences_name = 'b'
    AND user_preferences_name = 'f'
    AND user_preferences_name = 'q'
    AND user_preferences_name = 'w';

, который НИКОГДА не может быть правдой. Вместо этого вы можете использовать подвыбор, как сказал Гарви, или, если это статическое подмножество «всегда», вы можете добавить столбец для идентификации этого подмножества

0 голосов
/ 22 февраля 2012
$select = $DB->select()
    ->from('user_preferences' , array('user_preferences_name','user_preferences_value'))
    ->where('phone_service_id = ?', $phone_service_id)
    ->where('user_preferences_name IN (?)', array('a', 'b', 'f', 'q', 'w'));
...