如何为SQL初学者处理多个查找表? [英] How to deal with multiple lookup tables for beginners of SQL?

查看:89
本文介绍了如何为SQL初学者处理多个查找表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难把头缠在多个查找表上.我有一个中央表,其中每列中都包含ID以外的所有信息:

I'm having a hard time wrapping my head around multiple lookup tables. I have a central table with all the info but IDs in each column:

db_supply (Main supplier information data table)
 -----------------------------------------------
| Supplier_ID | Supply_Type_ID | Itm_ID | Stock |
|-----------------------------------------------|
| 1           | 1              | 33     | 3     |
|-----------------------------------------------|
| 2           | 2              | 28     | 1     |
 -----------------------------------------------

lookup_supplier
 -----------------------------
| Supplier_ID | Supplier_Name |
|-----------------------------|
| 1           | Walter        |
|-----------------------------|
| 2           | Jesse         |
 -----------------------------

lookup_supply_type
 -----------------------------------
| Supply_Type_ID | Supply_Type_Name |
|-----------------------------------|
| 1              | Import           |
|-----------------------------------|
| 2              | Delivery         |
 -----------------------------------

lookup_itm
 ------------------------
| Itm_ID | Itm_Name      |
|------------------------|
| 33     | Pickles       |
|------------------------|
| 28     | Burger        |
 ------------------------

A query for 'Burger' will output this table:
 -----------------------------------------------------
| Supplier_Name | Supply_Type_Name | Itm_Name | Stock |
|-----------------------------------------------------|
| Jesse         | Delivery         | Burger   | 1     |
 -----------------------------------------------------

我实际上将如何实现?到目前为止,我有:

How would I actually achieve this? So far I have:

SELECT * FROM db_supply WHERE Itm_ID = (SELECT Itm_ID FROM lookup_itm WHERE Itm_Name = 'Burger')

哪个会给我db_supply表的第二行,其ID尚未查找.我是否必须嵌套我的选择来查找多个表?这里不知道.

Which would give me the second row of the db_supply table with IDs not looked up yet. Do I have to nest my selects to look up multiple tables? No idea here.

推荐答案

SELECT  b.Supplier_Name,
        c.Supply_Type_Name,
        d.Itm_Name,
        a.Stock
FROM    db_supply a
        INNER JOIN lookup_supplier b
            ON a.Supplier_ID = b.Supplier_ID
        INNER JOIN lookup_supply_type c
            ON a.Supply_Type_ID = c.Supply_Type_ID
        INNER JOIN lookup_itm d
            ON a.Itm_ID = d.Itm_ID
WHERE   d.Itm_Name = 'Burger'

  • SQLFiddle演示
    • SQLFiddle Demo
    • 要进一步获得有关联接的知识,请访问下面的链接:

      To further gain more knowledge about joins, kindly visit the link below:

      输出

      ╔═══════════════╦══════════════════╦══════════╦═══════╗
      ║ SUPPLIER_NAME ║ SUPPLY_TYPE_NAME ║ ITM_NAME ║ STOCK ║
      ╠═══════════════╬══════════════════╬══════════╬═══════╣
      ║ Jesse         ║ Delivery         ║ Burger   ║     1 ║
      ╚═══════════════╩══════════════════╩══════════╩═══════╝
      

      这篇关于如何为SQL初学者处理多个查找表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆