2012-02-01 6 views
1

最初は一般的な情報が保持される場所のテーブルがあるかを見つけ出すことはできません、2番目は、ユーザーが(順番待ちリストのような)にサインアップ待ちテーブルは、2つのテーブルを照会しようとすると、私は

+---------+--------------+------+-----+-------------------+----------------+ 
| Field | Type   | Null | Key | Default   | Extra   | 
+---------+--------------+------+-----+-------------------+----------------+ 
| id  | int(11)  | NO | PRI | NULL    | auto_increment | 
| name | varchar(30) | YES |  | NULL    |    | 
| userid | int(3)  | YES |  | NULL    |    | 
| address | varchar(300) | YES |  | NULL    |    | 
| desc | varchar(550) | YES |  | NULL    |    | 
| phone | int(15)  | YES |  | NULL    |    | 
| image | varchar(50) | YES |  | NULL    |    | 
| website | varchar(100) | YES |  | NULL    |    | 
| cat  | varchar(25) | YES |  | NULL    |    | 
| date | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
+---------+--------------+------+-----+-------------------+----------------+ 


+----------+-----------+------+-----+-------------------+----------------+ 
| Field | Type  | Null | Key | Default   | Extra   | 
+----------+-----------+------+-----+-------------------+----------------+ 
| id  | int(11) | NO | PRI | NULL    | auto_increment | 
| userid | int(11) | YES |  | NULL    |    | 
| place_id | int(11) | YES |  | NULL    |    | 
| date  | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
+----------+-----------+------+-----+-------------------+----------------+ 
です

今のところ私はSELECT * FROM場所を行っています。前記ホームページに前記データを表示するステップと、を含む方法。ティッシュのようなもの:

<? foreach($places as $place): ?> 
<? echo $place->name; ?>; <? echo $place->userid; ?> etc ... 
<a href="#">Click this to insert your userid and $place->id into wait table</a> 
<? endforeach ?> 

これは私が迷ったところです。

<? if($current_user_id == $userid_from_wait_that_matches_place_id): ?> 
<p>You already registered for this!</p> 
<? else: ?> 
<a href="#">Click this to insert your userid and $place->id into wait table</a> 
<? endif; ?> 

それが待機テーブルにデータを追加したモデルでは、ユーザーのIDをチェックするか、ホームページのデータをつかむモデルでチェックする方が良いですかどうかわからない:私のような何かをしたいと思います。私が読んだことから、第二の選択肢はより良いでしょう。または、2つの個別のクエリを使用する必要がありますか?

答えて

1

私はあなたのデータベース設計が間違っていると思います:ユーザー固有のデータ(名前、画像、...)とuser_idを含む別個のusersテーブルを作成する必要があります。そして、あなたが言ったように "一般的な"情報を持つ別のテーブル:名前、desc、マップなど。この表では、ユーザ固有の情報は使用しません。user_id

データベースが大きすぎない場合は、有効なuser_idを持つselectタグを使用して、検証する必要はありません。

SELECT user.userid 
FROM user 
LEFT JOIN wait ON user.userid=wait.userid 
WHERE ISNULL(wait.place_id) 

は、これらのuseridselect -listに入れることができます。

EDITあなたはwaitテーブルにないuser_id sが何であるかを知りたい場合は、同様のクエリを使用しています。 USER_IDはwait_table内にある場合、それはないに存在しない場合

この方法では、それは...クライアント上であなたに情報を返します:

+0

私はusersテーブルを持っています。ユーザーデータだけでユーザーの名前は、「場所」表の唯一の余分な列です。それ以外には、投稿したユーザーのIDがあります。そしてそれはそれについてです。 – Ciprian

+0

ok ...固定された私はテーブルからユーザを削除しました。唯一の情報はuseridです。 – Ciprian

+0

私の編集を確認してください! – uzsolt

0

あなたはこのようなクエリを使用することができますテーブルは、よく、nullを返す必要があります。

私は実際にクエリから必要なテーブルフィールドを除外します。

関連する問題