Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Содержит ли любая из групп определённый тип материалов

Сообщения:  [1-6] 

 
 автор: bitlz   (22.05.2008 в 20:37)   письмо автору
 
   для: bitlz   (22.05.2008 в 19:44)
 

Вот конструкция которая у меня получилась:

    SELECT `group`
    FROM table
    WHERE
    (
    mat1 = 7
    OR mat2 = 7
    
    )
    AND `group`
    IN 
    (
    SELECT `group`
    FROM table
    where 
    (mat1 = 8
    OR 
    mat2 = 8) 
    group by `group`
    )
    GROUP BY `group`

Вот рабочая конструкция

   
 
 автор: bitlz   (22.05.2008 в 19:44)   письмо автору
 
   для: cheops   (22.05.2008 в 00:29)
 

В общем попробую с другой стороны.
Конструкция которая была использована выглядит так:

function is_in_group(){
$q=mysql_query("select `group` from table where `mat1`=7 group by `group`");
while($row=mysql_fetch_row($q)){
    $q1=mysql_query("select `group` from table where `group`=$row[0] and mat2=8");
    if(mysql_num_rows($q1)>0) return true;
}
return false;
}
При десяти группах все работает хорошо, но когда количество групп увеличится скажем до сотни, то за место одного запроса будет сто один.
Ранее я делал что-то подобное, но не помню ни где ни как.
Перерыл исходники, не нашел, всю башку сломал, не вспомнил.
Знаю нужен подзапрос, но как его сформулировать не знаю.
Заранее благодарен!!! Прошу помощи.

   
 
 автор: cheops   (22.05.2008 в 00:29)   письмо автору
 
   для: bitlz   (21.05.2008 в 13:04)
 

>Дело в том, что оба материала должны быть в группе, но не обязательно в одной строке.
Не понятно различие.

   
 
 автор: bitlz   (21.05.2008 в 13:04)   письмо автору
 
   для: cheops   (21.05.2008 в 11:31)
 

Дело в том, что оба материала должны быть в группе, но не обязательно в одной строке.

Да, нужны группы, причем не id а SELECT `group` WHERE ... GROUP BY `group`

   
 
 автор: cheops   (21.05.2008 в 11:31)   письмо автору
 
   для: bitlz   (21.05.2008 в 09:50)
 

Можно отталкиваться от запроса вида
SELECT * FROM tbl 
WHERE (mat1=7 AND mat2=8) OR (mat1=8 AND mat2=7)

PS Информация в каком виде должна выводиться - "содержи/не содержит" или просто вывести группы, которые такие материалы содержат?

   
 
 автор: bitlz   (21.05.2008 в 09:50)   письмо автору
 
 

Здравствуйте.
Есть таблица типа:
----------------------------
!id!group!mat1!mat2!
----------------------------
! 1! 1! 22! 23!
! 2! 1! 56! 58!
! 3! 1! 63! 11!
! 4! 2! 77! 14!
! 5! 2! 34! 2!
! 6! 2! 30! 7!
---------------------------
Как одним запросом проверить содержит ли любая из групп (group) и материал 7 и материал 8 причем материалы могут быть расположены и в mat1 и в mat2.
Помогите пожалуйста, кто знает. Очень нужно. Плиз.

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования