Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: запрос sql

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jonston
Отправлено: 27 Сентября, 2012 - 17:27:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Здравствуйте!Есть 2 таблицы (objects, categories).Отношение одна категория ко многим объектам.Когда делаю запрос типа:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT c.* FROM categories AS c LEFT JOIN objects AS o ON c.cat_id = o.obj_cat_id
  3.  

то дублируются категории.Как выбрать категории без дубликатов.
Второе:
В таблице objects есть поле status.Так вот как построить запрос что бы выбирал категории, у объектов которых status != 0.То есть например есть категория "Авто" к ней привязаны 5 объектов status у которых (у всех) равен 0.Как сделать что бы при запросе эта категория игнорировалась?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
eai
Отправлено: 27 Сентября, 2012 - 17:48:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




jonston пишет:
Здравствуйте!Есть 2 таблицы (objects, categories).Отношение одна категория ко многим объектам.Когда делаю запрос типа:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT c.* FROM categories AS c LEFT JOIN objects AS o ON c.cat_id = o.obj_cat_id
  3.  

то дублируются категории.Как выбрать категории без дубликатов.
Второе:
В таблице objects есть поле status.Так вот как построить запрос что бы выбирал категории, у объектов которых status != 0.То есть например есть категория "Авто" к ней привязаны 5 объектов status у которых (у всех) равен 0.Как сделать что бы при запросе эта категория игнорировалась?


Категории выбираются несколько раз если у них несколько объектов, соответственно если хочется выбрать тока категории то только к ним запрос и надо, или уточните задачу. В MSSQL так де есть волшебное слово DISTINCT, должно помочь.
(вроде в мускле тоже есть это волшебное заклинание)

2.
LEFT заменить на INNER, в WHERE пихнуть условие, задача сводится к первой
Хотя задача поставлена не четко, нужно ли выбирать если есть хотя бы одна запись с 0 и что делать с записями без объектов?

(Отредактировано автором: 27 Сентября, 2012 - 17:51:19)

 
 Top
jonston
Отправлено: 27 Сентября, 2012 - 17:50:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




eai пишет:
LEFT заменить на INNER, в WHERE пихнуть условие, задача сводится к первой

INNER тоже выдает дубли


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
eai
Отправлено: 27 Сентября, 2012 - 17:51:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




jonston пишет:
eai пишет:
LEFT заменить на INNER, в WHERE пихнуть условие, задача сводится к первой

INNER тоже выдает дубли


Для первой задачи ваще вторая таблица не нужная!
(Добавление)
Не понятна ваша задача, может так вот вам надо

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. SELECT DISTINCT c.* FROM categories AS c LEFT JOIN objects AS o ON c.cat_id = o.obj_cat_id
  5. WHERE (o.obj_cat_id IS NULL) OR (o.STATUS != 0)
  6.  
  7.  
 
 Top
jonston
Отправлено: 27 Сентября, 2012 - 20:46:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




спасибо попробую завтра


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
jonston
Отправлено: 28 Сентября, 2012 - 10:47:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




eai пишет:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT DISTINCT c.* FROM categories AS c LEFT JOIN objects AS o ON c.cat_id = o.obj_cat_id
  3. WHERE (o.obj_cat_id IS NULL) OR (o.STATUS != 0)
  4.  


зачем дополнительное условие?
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. WHERE (o.obj_cat_id IS NULL)
  3.  


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
eai
Отправлено: 28 Сентября, 2012 - 10:49:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




чтоб категории без объектов ваще тоже выбирались
 
 Top
jonston
Отправлено: 28 Сентября, 2012 - 11:31:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




eai пишет:
чтоб категории без объектов ваще тоже выбирались

Ага спасибо!Лови еще +1


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB