0

MINUS と同様に、2 番目のクエリ (2 番目のテーブルからのデータ) を除外する必要があります。しかし、MySQL は MINUS をサポートしていないため、LEFT JOIN を使用することにしました。ただし、データベースエラーが発生します。

ここに画像の説明を入力

モデル

function searchRooms($room_type, $start_date, $end_date) {
// Line 6 is the below one:
    $query = $this->db->query(
        "SELECT     room_number
        FROM        rooms
        WHERE       room_type = '$room_type'
        ORDER BY    room_number ASC

        LEFT JOIN

        SELECT      room_number
        FROM        new_reservation
        WHERE       start_date >= '$start_date'
        AND         end_date <= '$end_date'
        ORDER BY    room_number ASC
        ");
    return $query->result();

}

コントローラ

function search() {
        $room_type = $this->input->post('room_type');
        $start_date = $this->input->post('start_date');
        $end_date = $this->input->post('end_date');
        $this->reservations_model->searchRooms($room_type, $start_date, $end_date);

        $this->index();
}
4

4 に答える 4

3

a の構文LEFT JOINが間違っています。次の形式にする必要があります。

SELECT     room_number
FROM        rooms
LEFT JOIN .... ON ...
WHERE  ...
ORDER BY ...

UNIONそれとも の代わりにを探していLEFT JOINますか?

あなたの場合、おそらく2番目のクエリの条件を逆にして、それをWHERE最初のクエリの条件として使用することができます(私があなたを正しく理解していれば...)。

于 2013-07-08T15:08:05.900 に答える
0

codeigniter では、このように使用できます

$this->db->query("select tb.required_field,tb.another_require_field from table_name as tb
    left join another_table_name as atb on atb.common_column = tb.common_column 
      where tb.conditional_colun= condition");

これは、アプリケーションで使用する構文です

于 2014-11-14T06:55:56.557 に答える