我正在嘗試進行SQL查詢,並且遇到一些問題。查詢2個表,其中一個字段鏈接到2個不同的值
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,
);
爲每個條目,有幾個日期。
我想選擇entries.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時,我什麼都沒有。
我想我在我的請求中錯過了某些東西,當我在哪裏......並且,我該怎麼做才能得到正確的輸出結果?真正的要求很長,如果可能的話,我想避免另一個冗長的子查詢。
'(entry_dates.entry_date = '23/03/2013')AND(entry_dates.entry_date = '24/03/2013')',所以你希望日期等於2013年3月23日,同時等於24/03/2013?另外我很確定MySQL不喜歡那種格式的日期文字。 – Vatev 2013-03-23 18:13:07
我知道這一點,但我如何指定我希望這2個日期來自2個不同的entry_date?我想獲得有兩個entry_dates爲'23/03/2013'和另一個'24/03/2013' – 2013-03-23 18:31:30
的條目是否只想選擇entries.entry_id或entry_date表中的數據? – 2013-03-23 19:02:28