2017-04-20 10 views
0

利用可能なすべてのプロパティのリストをユーザーに表示するのではなく、自分のアカウントに保存していないすべてのプロパティを表示しようとしています。ユーザーが保存したプロパティをデータベース上のテーブルに記録し、プロパティのidとユーザーのidでこれを記録します。MySQLクエリを自動化してリストを作成する

だから私は、その後、2のidを持つプロパティを選択することになる

$query = "SELECT * FROM propertys WHERE id != 1 or 3";

このようなクエリを記述したいと思いますし、代わりに1と2とのリストで、ユーザーにそれを表示します3彼らはすでに見て1と3

を保存している問題

上に書いたこのクエリは、動作するようには思えません。それはまだすべてのプロパティを表示しますが、その理由はわかりません。


EDIT:

実際の問題

今では文句を言わないで残っているプロパティを表示します。上記のクエリは、インテントされているプロパティ1または3を表示しませんでしたが、現在はプロパティ2を表示しません。

+1

各比較に列を含める必要があります。 '$ query =" SELECT * FROM propertys WHERE id!= 1 and id!= 3'か 'not in'を使います。'$ query =" SELECT * FROM propertys from id(1,3) "' – chris85

+0

あなたは正しい構文を書いているかどうかわかりませんが、これを見てください:http://stackoverflow.com/questions/6156979/sql-where-condition-not-equal-to –

+0

私の2番目のクエリには、 '$ query =" SELECT * FROM propertysのidは(1,3) "ではありません。 – chris85

答えて

0

これはSQLの仕組みではありません。あなたは、SQL文の中でPHP "not equal"を使用しようとしています。使用しているデータベースに正しいSQLを使用する必要があります。私は質問で述べたように利用可能な値1、2及び3である特性)の行ソースを持っていた場合

$query = "SELECT * FROM propertys WHERE id NOT LIKE 1 OR id NOT LIKE 3" 
+3

'id <> 1 OR id <> 3'は間違った論理で、' not 1'は3を返し、 'not 3'は' 1'を返します。 'と'が必要です。 '!='も動作します、http://sqlfiddle.com/#!9/104245/1(私はどのように互換性があるのか​​分かりませんが、私は '<>'を使う傾向があります)。 – chris85

+1

@ chris85ちょうど同じことを書くことについてでした。 – webnoob

+0

助けていただきありがとうございます、私は実際に私が使用することができた、見つけられなかった(1,2)、それは働いた!しかし、助けてくれてありがとう。 – Nick

0

、:

$query = "SELECT * FROM propertys WHERE id <> 1 OR id <> 3" 

またはこれ:それはもっとこのように多くのことを見なければなりません例えば

property 
id name 
-- ------- 
    1 foo 
    2 fi 
    3 fo 
    4 fum 

そして、私は、各ユーザに「割り当て」されているプロパティの行が含まれる第2のテーブルを持っていたが、...各行はユーザに割り当てられたプロパティを表し、「欠落」の行は、プロパティを表します割り当てられていない、例えば

user_assigned_property 
user_name property_id 
------- ----------- 
jack  1 
jack  3 
giant  3 
giant  4 

私はおそらく使用する抗加入パターンを:割り当てられた特性のために外部結合、および一致

があったすべての行を除外するwhere句内の条件で、プロパティからすべての行を返します

私たちは、このことを期待する:

SELECT p.id 
    , p.name 
    FROM property p 
    LEFT 
    JOIN user_assigned_property a 
    ON a.property_id = p.id 
    AND a.user_name = 'jack' 
WHERE a.property_id IS NULL 
ORDER 
    BY p.id 

を返すために:

id name 
-- ---- 
2 fi 
4 fum 
0

私は私のansweを見つけましたr少なくとも。 Here複数の除外の構文を書き込もうとしていたときに問題が発生しました。助けをいただき、ありがとうございました。

関連する問題