我有这个疑问:更新查询中使用连接表
$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