2013-06-09 3 views
2

Мне нужно сравнить два разных столбца в инструкции mysql WHERE. В представлении, которое я создал, у меня есть столбец с именем E_ID и один под названием event. Мне нужно, чтобы SELECT с вида, где E_ID! = $E_ID, когда event = $event.Сравнение нескольких столбцов в mySQL

Так что если $event = статус и $E_ID = 1 утверждение было бы выбрать что-нибудь Thats не получили то же событие и те же E_ID, но он может возвращать данные, которые имеют те же E_ID и другое событие.

Хорошо, давайте примеры. Допустим, у меня это как две переменные:

$E_ID = '1'; 
$event = 'status'; 

Хорошо, и теперь в таблице это;

E_ID event 

1  status 
2  status 
3  status 
1  gig 
3  track 
5  gig 

Как вы можете, первая строка содержит набор данных в переменных, поэтому мы не хотим возвращать это. Но проблема заключается в E_ID, поскольку они могут быть одинаковыми, если событие отличается. Поэтому я хочу вернуть все, что не имеет E_ID из 1, когда event является status. Однако он может возвращать данные одного и того же E_ID и того же события.

Что должно быть возвращено, так это;

E_ID event 

2  status 
3  status 
1  gig 
3  track 
5  gig 

Как вы можете видеть, все возвращается, но строка, в которой есть данные, заданные в переменных.

Вот мой вопрос до сих пор.

SELECT * FROM stream_view WHERE E_ID != '$E_ID' 

Не совсем уверен, с чего начать так изо всех сил, чтобы понять это сам

+0

пожалуйста, вы можете сделать sqlfiddle из ваших таблицы? www.sqlfiddle.com – BeNdErR

+0

Вы хотите выбрать, что есть! = $ E_ID и = $ статус? Я вас правильно понял? – Fabio

+0

@fabio no Я хочу выбрать то, что не является '$ E_ID' WHEN event =' $ event'. Итак, если есть несколько событий, таких как gig, track и status, они возвратят данные, которые не имеют одного E_ID для строк, имеющих одно и то же событие. –

ответ

0

Я думаю, что ОП больше заинтересован в этом:

SELECT * FROM 
stream_view 
WHERE (event = '$event' 
AND E_ID <> '$E_ID') 
OR event<> '$event'; 
+0

Спасибо! Прекрасно работает –

0

ли вы имеете в виду, как это?

SELECT * FROM stream_view WHERE E_ID != '$E_ID' AND event = '$event' 
+1

$ Событие должно быть окружено кавычками, так как оно не целое – Fabio

0

Я думаю, вы можете просто поставить как условие в ваших WHERE пунктах

SELECT * FROM stream_view WHERE E_ID != '$E_ID' and event = '$event' 
+0

На самом деле я не имею в виду это. Игнорируйте мой предыдущий комментарий, который я сейчас удалил. Это будет выбирать только событие = = $ event.Посмотрите на мой пример, чтобы увидеть, что я после –

+0

@ nbs я посмотрел на ваш пример, но я не понял, чего вы пытаетесь достичь, не могли бы вы объяснить? – Fabio

Смежные вопросы