0
$sql = 'SELECT have_show FROM `date` WHERE DATE(`date`.day) = ?';
$this->db->query($sql, array($date));            //works fine  

これは期待どおりにうまく機能します。

$sql = 'SELECT actors, visitors, tickets, have_show FROM show
            JOIN `date` ON show.day = `date`.id
            WHERE DATE(`date`.day) = ?';

$this->db->query($sql, array($date));

ここでは、結合されたステートメントを使用すると、0 の結果が得られます。

データベーススキーマ

id(AI)     day(INT FK-date.id)    actors(INT)    visitors(INT)  
  1                 2                   3               45               

id(AI)     day(DATE)               have_show(BOOLEAN)
  1       2012-12-06                       0
  2       2012-12-07                       1

codeigniter のアクティブ レコードも同じことを行います。

このようなお悩みをお持ちの方はいらっしゃいますか?

4

1 に答える 1

0

これを試してください

     $sql = 'SELECT actors, visitors, tickets, acts FROM `show`
        JOIN `date` ON show.day = date.id
        WHERE DATE(date.day) = ?';

    $this->db->query($sql, array($date));

date.dayと の間で混在していますdate.id

または多分あなたはあなたがあなたのテーブルに持っているものを見てshow.idいないので、もしそうならshow.day

SQLshow.dayを次のように置き換えますshow.id

編集:

     $sql = 'SELECT s.day s.actors, s.visitors, s.tickets, s.acts d.day FROM `show` s
        JOIN `date` d ON s.day = d.id ';
于 2012-12-06T20:00:46.267 に答える