(sql)使用select语句输入

时间:2017-11-25 10:13:31

标签: php mysql session foreign-keys relation

我想做一个项目找一个出租的房子/房间 用户可以发布他的房间/房子出租 和其他人可以在地图上看到它

第一个用户应该登录然后他在表位置注册他的位置。 表位置包括id_location,lat,lng,id_user等。 id_location是自动增量,是其主键。 id_user来自用户登录的会话,它读取该用户名,即其外键。 休息由用户输入, 到目前为止我已经成功了

接下来的事情是用户要选房子或房间出租 例;他们想租房间。 这个房间的桌子有id_room,id_user,id_location,rate等。 id_room是自动递增,主键。 id_user来自用户登录的会话,因此它读取用户名。 问题出在id_location上。 数据库如何从最后一个位置输入/位置tbl获得id_location?

因为一个位置可以有超过1个房间,房间的类型可以不同,比如房价,设施等。 所以我为每个房间做了几个输入, 然后,用户可以为每个房间创建自己的房间数据,但具有相同的id_location

我的意思是

insert into tbl_room
values (null, '$_SESSION[username]', '$rate','$bla' ,'...','...' ,'...' , )
 where id_location from location.id_location

但我知道'不能进入输入场景..

我已经阅读了有关select语句的内容 但我不知道选择如何工作在我的情况下,我的意思是确切的查询将是

我希望你能理解我的问题 谢谢be4

1 个答案:

答案 0 :(得分:0)

在这种情况下,你有一对多的关系,其中一个位置可以有很多房间。简单的解决方案是在房间桌子上有一个列,该列引用房间所属位置的位置ID。

你可以在MySQL上做出类似的东西

Create table locations (
    Id int auto_increment,
    Location varchar(100)
)

Create table rooms (
    Id int auto_increment,
    Location_id int
) 

ALTER TABLE rooms ADD CONSTRAINT fk_location 
    FOREIGN KEY ( location_id` ) REFERENCES locations (id)

插入与此类似:

Insert into room (location_id) values ({$locationId});

然后你可以通过类似

的方式获得房间位置
Select l.location
From location l
    Inner join rooms r on r .id_location = l.id
Where r.id = {$roomId}