如何通过从另一行 table 中选择一行来检索数据形式 table

How to retrieve data form table by choosing one row from another table

我有两个这样的table

我想编写 SQL 查询,当所有者是 John 时检索 FORD、MAZDA、TOYOTA 和另一个 SQL 查询以检索 MITSUBISHI 、 JEEP 、 HONDA 当车主是 Joseph 时。

我可以这样做吗?

你能帮帮我吗?

这是一个多对多关系 看看这个: http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php

您需要添加一个枢轴 table 以将这两种实体类型连接在一起。 但首先你需要每个 table.

的主键
companies
---------
id   PRIMARY KEY AUTO_INCREMENT
name VARCHAR NOT NULL UNIQUE

owners
------
id   PRIMARY KEY AUTO_INCREMENT
name VARCHAR NOT NULL UNIQUE

现在是支点

companies_owners
----------------
company INT NOT NULL REFERENCES companies
owner   INT NOT NULL REFERENCES owners

枢轴也应该在 companyowner

上有一个唯一索引

在 phpmyadmin 中执行这些表并将其导入您的数据库

 -- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Mar 15, 2016 at 02:06 PM
-- Server version: 5.6.17
-- PHP Version: 5.5.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `testing`
--

-- --------------------------------------------------------

--
-- Table structure for table `cars`
--

CREATE TABLE IF NOT EXISTS `cars` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `owner_id` text NOT NULL,
  `car` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `cars`
--

INSERT INTO `cars` (`id`, `owner_id`, `car`) VALUES
(1, '1255', 'FORD'),
(2, '1255', 'MAZDA'),
(3, '1255', 'TOYOTA'),
(4, '1455', 'MITSUBISHI'),
(5, '1455', 'JEEP'),
(6, '1455', 'HONDA');

-- --------------------------------------------------------

--
-- Table structure for table `owners`
--

CREATE TABLE IF NOT EXISTS `owners` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `owner_id` text NOT NULL,
  `owner` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `owners`
--

INSERT INTO `owners` (`id`, `owner_id`, `owner`) VALUES
(1, '1255', 'Jhon'),
(2, '1455', 'Joseph');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

然后执行下面这个查询

SELECT cars.*
FROM cars
JOIN owners
ON owners.owner_id = cars.owner_id
where cars.owner_id ='1455'
Order By cars.car ASC

现在您将了解完成您所要求的操作的基本方法