【问题标题】:Select two tables in one query PDO在一个查询 PDO 中选择两个表
【发布时间】:2012-07-05 13:05:24
【问题描述】:

我已经花了几个小时来弄清楚这个查询,但没有结果,

我实际上是 PDO 的新手,我曾经使用 MYSQL,但我在 stackoverflow 上看到我必须更改为 PDO,因为 MYSQL 很快就会被禁用,

所以现在我的问题是,我想在这样的一个查询中选择两个彼此没有关系的不同表,

$query = $dbh->query("SELECT * FROM table1; SELECT * FROM table2");
//rest of query,

我该怎么做?

【问题讨论】:

  • MySQL 将被禁用? MySQL 是您正在使用的数据库系统。 PDO 也适用于 MySQL。
  • 我真的不明白同时查询两个不相关的表的目的可能是什么,更不用说这在结果 dtaset 中造成的混乱。
  • @ShogunArts.de 他指的是旧的和已弃用的mysql_ php 扩展,而不是 DBMS。
  • @ShogunArts.de 抱歉,我的意思是说mysql_query() 将被禁用
  • 如果您编写一个查询,它会在 MySQL 查询窗口/CLI 界面中为您提供您期望的结果集,您可以针对 PDO 对象运行它,它每次都会为您提供相同的结果.获取正确的查询,然后将其传递给 PDO 对象,您将获得正确的数据。

标签: php sql pdo


【解决方案1】:

就像使用普通 SQL 一样:

$query = $dbh->query("SELECT * FROM table1, table2");

【讨论】:

  • 不知道。桌子是空的吗?
  • 没有满的,我用的是mySQL
  • 该查询将对两个表进行可怕的笛卡尔连接,并且肯定会导致 table1 中的每一行与 table2 中的每一行匹配。如果表有数据,则无法获得空结果集。
【解决方案2】:

或者使用JOIN

SELECT t1.id, t2.name FROM users AS t1 JOIN people AS t2 ON t1.id = t2.id;

【讨论】:

  • 没有关系,所以不能加入
  • @itsme 如果这两个表之间没有关系,那你为什么要用一个查询来选择它们?
  • 因为我需要同时选择它们并且我不想做两个不同的查询,而是希望它在一个查询中
  • itsme,唯一的方法是使用上面@MattBall 向您展示的可怕的笛卡尔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多