Запрос

chira

Новичок
если у тебя value имеет только два значения (0,1) и для каждой записи в p1 есть хоть одна запись в t2, то достаточно такого запроса
Код:
SELECT DISTINCT p1. *
FROM t1 AS p1
 LEFT JOIN t2 AS p3 ON p1.id = p3.catid AND p3.value =1
WHERE p3.catid IS NULL 
LIMIT 0 , 30
это уже вопросы оптимизации ...
 

zEitEr

Новичок
Классно у тебя получается....
Воот сидел дома.... пробовал... что-то не совсем догоняю....

Смотри... а как тогда выбрать записи, у которых обязательно value имеет два значения и 1 и 0?
 

chira

Новичок
ты два разных задания хочешь решить одним SQL-ом?
что бы было и 1 и 0:
Код:
SELECT DISTINCT p1. *
FROM t1 AS p1, t2 AS p2, t2 AS p3
WHERE p1.id = p2.catid AND p2.value =0 AND p1.id = p3.catid AND p3.value =1
 

zEitEr

Новичок
Спасибо огромное :)
Сработало.... все именно так, как и нужно....

Спасибо, ты мне очень помогла....

-~{}~ 16.04.04 16:32:

Вах.... вот и я опять.....

Есть таблица:
+----------------------+
| pic_id | pic_point |
+--------+------------+
| 16 | 5 |
| 16 | 1 |
| 15 | 5 |
| 9 | 5 |
+--------+------------+

Делаю запрос....
PHP:
SELECT DISTINCT A.pic_id, SUM( B.pic_point ) AS total FROM foto_raiting A, foto_raiting B WHERE B.pic_id=A.pic_id GROUP BY 1
Выдает...
+----------------------+
| pic_id | total |
+--------+------------+
| 9 | 5 |
| 15 | 5 |
| 16 | 12 |
+--------+------------+

Т.е. я хочу подсчитать общее кол-во баллов (очков) за каждую картинку...
За картинку pic_id=16 сумма баллов будет 6, а он мне выдает 12... Почему он дважды считает? Как это можно исправить?
 

chira

Новичок
зачем тебе для этого случая объеденять таблицы?
[SQL]
SELECT A.pic_id, SUM( A.pic_point ) AS total
FROM foto_raiting A
GROUP BY 1
[/SQL]
 

zEitEr

Новичок
Спасибо :)

Мда... уж... совсем оттупел.... все оказалось проще чем думал.... Вот так всегда....

Спасибо
 
Сверху