如何在 PHPmyAdmin 中进行表连接

Posted

技术标签:

【中文标题】如何在 PHPmyAdmin 中进行表连接【英文标题】:How to make Table Joins in PHPmyAdmin 【发布时间】:2012-01-31 00:55:06 【问题描述】:

我在 phpmyadmin 中有 2 个表需要加入

tracklisting 是我的,catelogue 是另一个,保存为innodb

他们都有一个专栏CAT.NO,并希望将其加入此专栏。在目录中它是主要的,在跟踪列表中它被索引

catelogue 是我的父母,tracklisting 是孩子,因为它没有目录中每条记录的信息。我相信这是正确的,除非我错了

如何做到这一点,以便当我查询 tracklisting 中的列时,它只会显示“catelogue”的匹配项,因为我想知道它在哪个专辑上,而不是我的整个 60000 多个目录

这可以通过phpmyadmin的界面来完成还是这是一个sql语句

非常感谢

编辑:

这是有效的代码

SELECT *
FROM tracklisting
INNER JOIN catelogue ON catelogue.`CAT NO.` = tracklisting.`TRACKLISTING CAT NO.`
WHERE tracklisting.`ARTIST` LIKE 'placebo'

感谢所有提供帮助的人

【问题讨论】:

【参考方案1】:

假设你的 tracklisting 有一个 id 并且你想用它查询:

select * from tracklisting t
inner join catelogue c on c.cat.no = t.cat.no
where t.id = 1

【讨论】:

【参考方案2】:

您可以使用 LEFT JOIN 进行查询:

SELECT * FROM tracklisting LEFT JOIN catelogue ON tracklisting.`CAT.NO` = catelogue.`CAT.NO` WHERE tracklisting.`<id-field>` = <id-value>`

http://dev.mysql.com/doc/refman/5.0/en/join.html

【讨论】:

【参考方案3】:

我不知道这是否可以通过接口来完成,但是用sql来完成

SELECT * 
FROM 
  tracklisting t 
  INNER JOIN catelouge c on c.catno=t.catno 
WHERE t.id = 1

【讨论】:

只需要一些编辑来匹配我所有的列,但这就是我想要的。 O 和 where 子句更改为我的搜索条件【参考方案4】:

实际的连接发生在 SQL 语句中,尽管对于 InnoDB 等某些存储类型,您还可以创建外键引用,在数据库级别强制关系,以便您的插入需要正确的记录,并且您的删除是如果存在子记录,则受到限制。

这是为您的 SQL 查询执行连接语法的一种方法:

SELECT t.* FROM tracklisting t, catalogue c
WHERE `t.CAT.NO` = `c.CAT.NO`

编辑:Here 是指向在 phpMyAdmin 中创建外键的教程的链接。

【讨论】:

如果我设置了外键,phpmyadmin 是否能够创建我正在寻找的 sql 代码,还是必须手动输入? 很遗憾,不,phpMyAdmin 不会根据外键为您创建加入代码。一些 PHP 框架会为您完成工作,例如 CakePHP 等。在这些框架中,如果您配置了外键关系,那么框架会在查询中执行所有必要的连接。

以上是关于如何在 PHPmyAdmin 中进行表连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 phpMyAdmin 中禁用查询分析

phpMyAdmin 不允许我登录 - 没有显示错误

我无法使用 springboot 连接到我的 mysql 数据库我使用相同的密码和名称与 phpmyadmin 连接得很好

phpmyadmin.pma_table_uirefs 使用虚拟机不存在

WAMP 错误:禁止您无权访问此服务器上的 /phpmyadmin/

WAMP 错误:禁止您无权访问此服务器上的 /phpmyadmin/