SQL クエリを作成しようとしていますが、いくつか問題があります。
CREATE table entries (
id_entry INT PRIMARY KEY,
);
CREATE table entry_date (
entry_date_id INT PRIMARY KEY,
entry_id INT,
entry_price INT,
entry_date TEXT,
);
各エントリには、いくつかの日付があります。
たとえば、そのエントリに日付「23/03/2013」と「24/03/2013」がリンクされているentries.entry_idを選択したいと思います。
2 つの日付が配列に格納されます。
$data = array('ci' => '23/03/2013', 'co' => '24/03/2013');
治療の実用的な目的のために、日付をテキストで保存します。Zend_Db を使用しているため、クエリは次のように作成されます。
$select = $table->select ()->from ( 'entries' )->setIntegrityCheck ( false );
if ($data ['ci'] != NULL) {
$select->join ( array (
'entry_dates' => 'entry_dates'
), 'entries.id_entry = entry_dates.entry_id' );
$select->where ( 'entry_dates.entry_date = ?', $data ['ci'] );
}
if ($data ['co']) {
if ($data['ci'] == NULL) {
$select->join ( array (
'entry_dates' => 'entry_dates'
), 'entries.id_entry = entry_dates.entry_id' );}
$select->where ( 'entry_dates.entry_date = ?', $data ['co'] );
}
を与える:
SELECT `entries`.*, `entry_date`.*
FROM `entries`
INNER JOIN `entry_dates`
ON entries.id_entry = entry_dates.entry_id
WHERE (entry_dates.entry_date = '23/03/2013')
AND (entry_dates.entry_date = '24/03/2013')
そして、まあ...うまくいきません。$select をフェッチしても、何も得られません。
WHERE ... を実行したときにリクエストに何かが欠けていると思いますが、正しい出力を得るにはどうすればよいですか? 実際のリクエストは非常に長いため、可能であれば別の長いサブセレクトを避けたいと思います。