Не получается сделать выборку.

naima

Guest
Не получается сделать выборку.

Описание
Есть две таблицы, в одной информация в другой временные данные просмотра этой информации.
Задача.
Сделать выборку по тому что не посмотрел конкретный пользователь.

tabl1
| id | text |

tabl2

| id | idt1 | uid | date |

tabl2.idt1=tabl1.id

uid=id пользователя

Date сегодняшнее число

Необходимо вытащить tabl1.id не просмотренных сегодня.
 

Dreamer76

Through thorns
$date_today = date("m.d.y");

select tabl1.id, tabl2.uid, tabl2.date from tabl1, tabl2 where tabl2.date < $date_today order by table1.id;

примерно так.
 

crocodile2u

http://vbolshov.org.ru
Dreamer76: это мы так шутим? Имхо, неумно.

Если поддерживаются подзапросы, можно что-то вроде этого:

[sql]
SELECT t1.id
FROM t1
WHERE t1.id NOT
IN (

SELECT t2.idt1
FROM t2
WHERE t2.uid = 'user1' AND t2.date = NOW( )
)
[/sql]

Или реализовать то же самое двумя запросами.
 

crocodile2u

http://vbolshov.org.ru
Или реализовать то же самое двумя запросами.
А вот ты не мог бы просветить меня, в чем смысл:

а) $date_today = date("m.d.y"); ?
б) Делать выборку, совершенно не относящуюся к поставленной задаче ?
 

chira

Новичок
Код:
select tabl1.id
from tabl1
LEFT JOIN tabl2 ON tabl2.idt1=tabl1.id AND tabl2.date = CURDATE()
where tabl2.id IS NULL
 

crocodile2u

http://vbolshov.org.ru
chira: и правда, работает.

А я рано сдался, когда пытался одним запросом выбрать.
Написал

[sql]
select tabl1.id
from tabl1
LEFT JOIN tabl2 ON tabl2.idt1=tabl1.id
where tabl2.id IS NULL AND tabl2.date = CURDATE()
[/sql]

А оно, конечно, работает не так, как нужно :)
 
Сверху