尝试查询两个表,我无法弄清楚如何
问题描述:
第一类是一般的信息存放地表,第二个是等待表,用户注册(如等待名单)尝试查询两个表,我无法弄清楚如何
+---------+--------------+------+-----+-------------------+----------------+
| 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的地方;并在主页上显示数据。像tihs:
<? 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或在该主页抓取数据对模型进行检查。从我读过的内容来看,第二种选择会更好。或者我应该使用两个单独的查询?
答
我认为你的数据库设计是错误的:你应该创建单独的users
表用户特定的数据(名称,图像,...)加user_id
。另一张带有“常规”信息的表格(如您所说):名称,desc,地图等。并且在此表中并未仅使用用户特定信息user_id
。
如果你的数据库不是太大,你可以使用select
标签和有效的user_id
s,所以你不需要验证。
编辑,如果你想知道什么是user_id
S的不wait
表,使用类似的查询:
SELECT user.userid
FROM user
LEFT JOIN wait ON user.userid=wait.userid
WHERE ISNULL(wait.place_id)
这些userid
可以放入select
-list。
答
你可以使用类似这样的查询:
这样,如果user_id是在wait_table它会回报你的信息在客户端上......如果不存在,它表,那么应该返回null。
虽然我会筛选出我真正需要查询的表字段。
我有一个用户表。只需用户数据。用户名是“place”表中唯一的额外列。除此之外,它具有发布用户的ID。这就是它。 – Ciprian 2012-02-01 14:47:38
好吧...得到了固定我从表中删除用户现在唯一的信息是用户名。 – Ciprian 2012-02-01 14:57:04
请检查我的编辑! – uzsolt 2012-02-01 15:21:56