【问题标题】:Need to select from multiple tables需要从多个表中选择
【发布时间】:2013-02-03 16:42:45
【问题描述】:

所以,我的表如下(每个表中的主键是 PhoneID、ManufacturerID 和 OSID。外键在名称前标有星号):

电话

PhoneID
*ManufacturerID
Model
*OSID
Description
ScreenSize
Price
StockQuantity
StorageSize
Image
Thumbnail
IsFlagged

制造商

ManufacturerID
Name
Details
Telephone

操作系统

OSID
Name
Company
Description

我需要做的基本上是一个查询,它将获取制造商名称和手机型号以及其他详细信息并显示它。示例:

如果我有:

三星在制造商行中来自制造商

手机

中的型号行中的 Galaxy S3

Phones

的 StorageSize 行中有 16GB

OS

中“名称”行中的 Android 4.2

499.99 来自 Phones

的价格行

我将如何构建查询以使句子“Samsung Galaxy S3 16GB - Android 4.2 - £499.99?

很抱歉这篇冗长的帖子,感谢我收到的任何帮助/答案

【问题讨论】:

    标签: mysql sql select join


    【解决方案1】:

    我将如何构建查询,以便句子“Samsung Galaxy S3 16GB - Android 4.2 - 499.99 英镑?

    select  concat(m.Manufacturer, ' ', p.Model, ' ', p.StorageSize, ' - ',
                o.Name, ' - ', p.Price)
    from    Phones p
    join    Manufacturer m
    on      p.ManufacturerID = m.ManufacturerID
    join    OS o
    on      p.OSID = o.OSID
    

    【讨论】:

      【解决方案2】:

      基本上你需要加入表格,

      SELECT  a.*, b.*, c.*  -- select only the columns you want.
      FROM    Phones a
              INNER JOIN Manufacturer b
                  ON a.ManufacturerID = b.ManufacturerID
              INNER JOIN OS c
                  ON a.OSID = c.OSID
      -- WHERE    .... put the condition here ...
      

      你也可以使用CONCAT(或CONCAT_WS),如果你想在查询中生成句子,你也可以在前端完成。

      要全面了解联接,请访问以下链接:

      其他链接

      【讨论】:

      • 哦,请在 @Andomar 的查询中提供别名 SELECT CONCAT(....) sentence FROM... 并在您的 php 脚本中检索 sentence,以便您可以显示该值。
      • 我回来了。您可以将整个 php 代码连同您的问题一起发布以便可以轻松查看吗?
      • @user1762928 见 Mahmouds 的回答 :D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多