我有這個疑問:更新查詢中使用連接表
$sql ="SELECT * FROM card c JOIN driver d ON c.referred_as=d.referred_as WHERE d.ID='$id'";
它需要進行更新,以包括第三表,該表包含驅動程序和卡ID的來自各個表連接表。表1稱爲card
。是重要的領域是:
state_id
- 此表有3個值(1,2,3) associated_driver
- 上driver
表稱爲referred_as
//而不是表的實際組成部分。由第3表創建 referred_as
- 在driver
上調用associated_card
表 表2調用driver
。
是重要的領域是: ID
- 表 associated_card
的自動遞增值 - 有一個值,通常一些數量e.g 123555 //實際上並不是表的一部分。
創建由第三臺 referred_as
- 驅動程序的名稱()卡表稱爲associated_driver
忘了加入這個表:
表3被稱爲card_driver
。這是很重要的領域是:
driver_id
- 從連接到卡 card_id
驅動器表中的id - 從鏈接到司機
我希望發生什麼卡表中的id:
當用戶從driver
表中輸入他們的ID時,它將比較兩個表具有的字段,即associated_card
字段(在卡表上稱爲referred_as
)。
associated_card
來自連接表,我不知道如何進入查詢。
歡迎任何幫助。如果你需要我解釋一下,我會的。
--
-- Table structure for table `card`
--
CREATE TABLE IF NOT EXISTS `card` (
`id` int(11) NOT NULL auto_increment,
`startdate` date NOT NULL,
`enddate` date NOT NULL,
`state_id` int(11) NOT NULL,
`referred_as` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Table structure for table `card_driver`
--
CREATE TABLE IF NOT EXISTS `card_driver` (
`card_id` int(11) NOT NULL,
`driver_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Table structure for table `driver`
--
CREATE TABLE IF NOT EXISTS `driver` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(40) default NULL,
`supplier_id` int(11) NOT NULL,
`referred_as` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
一些圖片:
如果你分享你的表格模式,這將很容易理解 – sunk
你的意思是來自sql文件的東西嗎? – Lazis002
看看這個問題是否有幫助:http://stackoverflow.com/questions/8057565/mysql-update-statement-inner-join-tables – Maximus2012