首页 文章

具有多个表关系的mysql查询问题

提问于
浏览
1

我在查询数据时遇到问题 . 这是我的表格:

CREATE TABLE `A` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `myString` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `B` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `myStringId1` int(10) NOT NULL,
  `myStringId2` int(10) NOT NULL,
  `value` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index1` (`myStringId1`),
  KEY `index2` (`myStringId2`),
  CONSTRAINT `fk_B2` FOREIGN KEY (`myStringId2`) REFERENCES `A` (`id`),
  CONSTRAINT `fk_B1` FOREIGN KEY (`myStringId1`) REFERENCES `A` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

其中 myStringId1myStringId2 对表A有外键约束( id

好吧,让我澄清一下我想通过查询实现的目标:让我们假设给定表的一些值:

TABLE A:
ROW1: 22, "foo"
ROW2: 33, "bar"

TABLE B: 
ROW1: 1, 22, 33, "true"
ROW2: 2, 22, 22, "false"

现在我需要的是一个查询,我给String“foo”并从加入两个表得到以下结果:

RESULT:
ROW1: "foo","bar", "true"
ROW2: "foo", "foo", "false"

给出字符串“bar”我期望这样:

结果:ROW1:“foo”,“bar”,“true”

有任何想法吗 ?

1 回答

  • 0

    在阅读您的评论后,我认为这更接近您的需求:

    SELECT a1.myString as myString1, a2.myString as myString2, b.value
    FROM `B` b
        JOIN `A` a1 on a1.id = b.myStringId1
        JOIN `A` a2 on a2.id = b.myStringId2
    WHERE a1.myString = 'SOME STRING' OR a2.myString = 'SOME STRING'
    

    这两个连接将确保_125192_和 b.myStringId2 都是 TABLE A 的现有键, WHERE 确保这两个字符串中的一个是您需要的字符串 .

相关问题