【问题标题】:How to make Table Joins in PHPmyAdmin如何在 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'

感谢所有提供帮助的人

【问题讨论】:

    标签: mysql sql phpmyadmin


    【解决方案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 等。在这些框架中,如果您配置了外键关系,那么框架会在查询中执行所有必要的连接。
        猜你喜欢
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 2021-12-07
        • 2014-05-25
        • 2013-05-04
        相关资源
        最近更新 更多