2017-11-25 259 views
-3

我想打一個項目,以找到一個租來的房子/房間 用戶可以發表自己的房間/房子租 和其他人可以看到它在地圖(SQL)輸入select語句

第一用戶應該登錄,然後在他在表格位置註冊他的位置。 表位置包括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?

因爲一個位置可以有一個以上的房間,房間的類型可以不同,比如它的速率,設施等。 因此我爲每個房間輸入了幾個輸入,然後用戶可以創建它的每個房間自己的房間的數據,但有一個相同的id_location

我的意思是這樣

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

,但我知道「其中」不能在輸入方案..

我讀過一些有關選擇STA tement 但我不知道在我的情況下選擇是如何工作的,我的意思是準確的查詢將

我希望UR明白我的問題 感謝BE4

+0

如果你想'INSERT'的東西你可能想看看['INSERT INTO'](https://dev.mysql.com/doc/refman/5.7/en/inse rt.html)而不是'SELECT'。 –

+1

[Insert into ... values(SELECT ... FROM ...)]的可能重複(https://stackoverflow.com/questions/25969/insert-into-values-select-from) – yacc

回答

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}