Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корректно не работает неравенство, select глючит 
:(
    Опции темы
kichSman
Дата 27.10.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 24.2.2009

Репутация: нет
Всего: нет



Код

CREATE TEMPORARY TABLE table2 
    SELECT table1.kind_txt, table1.kind, COUNT(table0.kind) AS sum
    FROM table0, table1 
    WHERE table0.date = '2009-10-08' AND table1.kind = table0.kind
    GROUP BY table0.kind

SELECT kind, txt, sum 
    FROM table2

SELECT table1.kind, table1.txt 
    FROM table1,table2 
    WHERE table1.kind<>table2.kind 
    ORDER BY table1.kind


Когда в последнем запросе вытаскиваю столбцы, то результат не полный, либо вовсе table1 выдает абсолютно все строки, причем дублируя их 5 раз.
Что делать, товарищи выручайте

Это сообщение отредактировал(а) kichSman - 27.10.2009, 14:01
PM MAIL   Вверх
azesmcar
Дата 27.10.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(kichSman @  27.10.2009,  13:33 Найти цитируемый пост)
Когда в последнем запросе вытаскиваю столбцы, то результат не полный, либо вовсе table1 выдает абсолютно все строки, причем дублируя их 5 раз.

Вообще неравенство (как и равенство) не работает на сравнении значений null. Любое сравнение с null дает false, проверь, может проблема в этом. А вообще какой-то странный запрос, сильно сомневаюсь что там неравенство нужно.
PM   Вверх
DimW
Дата 27.10.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



table1.kind<>table2.kind   smile 
что хотели этим сказать? вывести все записи из таблицы 1 которых нет в таблице 2? 
PM MAIL ICQ   Вверх
kichSman
Дата 27.10.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 24.2.2009

Репутация: нет
Всего: нет



Цитата(azesmcar @ 27.10.2009,  13:47)
Цитата(kichSman @  27.10.2009,  13:33 Найти цитируемый пост)
Когда в последнем запросе вытаскиваю столбцы, то результат не полный, либо вовсе table1 выдает абсолютно все строки, причем дублируя их 5 раз.

Вообще неравенство (как и равенство) не работает на сравнении значений null. Любое сравнение с null дает false, проверь, может проблема в этом. А вообще какой-то странный запрос, сильно сомневаюсь что там неравенство нужно.

Там поидее, второй и третий селект можно заменить что то на подобии
Код

SELECT table1.txt, IF(table1.kind=table2.kind){
        table1.kind AS having
    }ELSE{
        table2.kind AS nothaving
    } 
    END IF
    FROM table1, table2


Но тут я не могу составить запрос в правильном синтаксисе
В общем, конечным результатом должны быть две переменные в php, которым при цикле присваивается

Код

//имеющиеся
$var1=arraySQL["having"]." ".arraySQL["txt"];
//отсутствующие
$var2=arraySQL["nothaving"]." ".arraySQL["txt"];


т.е. основная суть, разделить на две переменные без дублирования

Добавлено через 53 секунды
Цитата(DimW @ 27.10.2009,  13:56)
table1.kind<>table2.kind   smile 
что хотели этим сказать? вывести все записи из таблицы 1 которых нет в таблице 2?

именно это и хотел
PM MAIL   Вверх
DimW
Дата 27.10.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(kichSman @  27.10.2009,  14:00 Найти цитируемый пост)
именно это и хотел 

используйте minus если поля в этих таблицах одинаковые...:
Код

select * from table1
minus
select * from table2


если нет то not exists вам в помощь.
PM MAIL ICQ   Вверх
azesmcar
Дата 27.10.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(kichSman @  27.10.2009,  14:00 Найти цитируемый пост)
именно это и хотел 

хотел, но не сказал smile 

Это сообщение отредактировал(а) azesmcar - 27.10.2009, 14:08
PM   Вверх
kichSman
Дата 27.10.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 24.2.2009

Репутация: нет
Всего: нет



Цитата(DimW @ 27.10.2009,  14:07)
Цитата(kichSman @  27.10.2009,  14:00 Найти цитируемый пост)
именно это и хотел 

используйте minus если поля в этих таблицах одинаковые...:
Код

select * from table1
minus
select * from table2


если нет то not exists вам в помощь.

А можно как нибудь это одним запросом реализовать (достать имеющиеся и не имеющиеся) и вытащить в рнр при едином цикле?
PM MAIL   Вверх
Zloxa
Дата 27.10.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(azesmcar @  27.10.2009,  13:47 Найти цитируемый пост)
Любое сравнение с null дает false, 

Если мы примем что false есть null = null , а true есть not(false), то not(null= null) будет true?
 smile 
Что не так? 
В чем подвох?


Это сообщение отредактировал(а) Zloxa - 27.10.2009, 14:30


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
azesmcar
Дата 27.10.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(Zloxa @  27.10.2009,  14:24 Найти цитируемый пост)
Что не так?

 smile это я для краткости, сравнение с null дает unknown, который в проверке предстает в качестве false-а. 
unknown = false
not(unknown) = false

Цитата(kichSman @  27.10.2009,  14:10 Найти цитируемый пост)
А можно как нибудь это одним запросом реализовать (достать имеющиеся и не имеющиеся) и вытащить в рнр при едином цикле? 

реализовать что? Два разных запроса в одном запросе? Посмотри union если я тебя правильно понял.
PM   Вверх
DimW
Дата 27.10.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(kichSman @  27.10.2009,  14:10 Найти цитируемый пост)
А можно как нибудь


которых нет в таблице 2:
Код

select t1.kind
      ,t1.txt
  from table1 t1
 where not exists (select 1
          from table2 t2
         where t2.kind = t1.kind)


которые есть и там и там:
Код

select t1.kind
      ,t1.txt
  from table1
      ,table2
 where table1.kind = table2.kind


если нужно объединить два множиства используйте union all:
Код

select t1.kind
      ,t1.txt
  from table1 t1
 where not exists (select 1
          from table2 t2
         where t2.kind = t1.kind)
union all         
select table1.kind
      ,table1.txt
  from table1
      ,table2
 where table1.kind = table2.kind



Это сообщение отредактировал(а) DimW - 27.10.2009, 14:32
PM MAIL ICQ   Вверх
sTa1kEr
Дата 27.10.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Цитата(azesmcar @  27.10.2009,  15:31 Найти цитируемый пост)
это я для краткости, сравнение с null дает unknown

Почему просто не проверить?
Код

SELECT NULL = NULL

PM MAIL   Вверх
Zloxa
Дата 27.10.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(sTa1kEr @  27.10.2009,  14:38 Найти цитируемый пост)
Почему просто не проверить?

А можно результат в студию, и с комментариями./*в смысле, наверняка в ввыводе будет чтото вроде 1, 0 или -1, а что есть что я не знаю*/
Мне жудко интересно как это в маське, а инстанса MySQL доступного для  меня -  нет :((

Это сообщение отредактировал(а) Zloxa - 27.10.2009, 14:43


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
azesmcar
Дата 27.10.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(sTa1kEr @  27.10.2009,  14:38 Найти цитируемый пост)
Почему просто не проверить?

В каком смысле? что проверить? результат сравнения с null - unknown

Zloxa
я тут ошибся
NOT(unknown)=unknown...


Это сообщение отредактировал(а) azesmcar - 27.10.2009, 14:49
PM   Вверх
sTa1kEr
Дата 27.10.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Цитата(Zloxa @  27.10.2009,  15:42 Найти цитируемый пост)
А можно результат в студию, и с комментариями./*в смысле, наверняка в ввыводе будет чтото вроде 1, 0 или -1, а что есть что я не знаю*/

Конечно smile 
Код

mysql> SELECT NULL = NULL;
+-------------+
| NULL = NULL |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

PM MAIL   Вверх
azesmcar
Дата 27.10.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(Zloxa @  27.10.2009,  14:42 Найти цитируемый пост)
Мне жудко интересно как это в маське, а инстанса MySQL доступного для  меня -  нет :((

а какая разница, это стандарт.

PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.