我正在尝试进行 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,
);
每个条目都有几个日期。
我想选择 entry.entry_id 该条目具有例如链接到它的日期“23/03/2013”和“24/03/2013”。
这两个日期存储在一个数组中:
$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 ... AND 时,我的请求中遗漏了一些东西,我应该怎么做才能获得正确的输出?真正的请求真的很长,如果可能的话,我想避免另一个长的子选择。