【问题标题】:SQL: How to join two tables to get names instead Id's to search engine using LIKE?SQL:如何使用 LIKE 连接两个表以获取名称而不是 Id 到搜索引擎?
【发布时间】:2012-07-22 23:06:28
【问题描述】:

我有两个名为:t_servicio 和 cat_clientes 的表,其组成如下:

t_servicio:

cat_clientes:

表 t_servicio 托管“Id_Cliente”。所以我正在做的是一个搜索引擎,现在我只想搜索 "Id_cliente" 列。问题是,如何使用 LIKE 条件获取将表 t_servicio 与表 cat_clientes 连接起来的客户(客户)的名称以查找匹配项?

希望能帮到我!

编辑:

例如,在获取结果时,Marca, Producto y SubProducto 列只显示 ID,但我想要她的名字,那会是什么句子?

我想要这样的结果:

【问题讨论】:

  • 到目前为止你有什么?

标签: sql join sql-like


【解决方案1】:

我的西班牙语不好,但如果我理解正确,您想在 cat_clientes 表中的 P_Nombre 上使用LIKE 条件(对吗?),其中客户 ID 在 t_servicio 表中。如果这是正确的,使用简单的INNER JOIN 应该可以解决问题:

SELECT *
FROM t_servicio T
    INNER JOIN cat_clientes C ON C.Id = T.Id_Cliente
WHERE C.P_Nombre LIKE '%queso%'

编辑:响应“例如,在获取结果时,Marca、Producto 和 SubProducto 列仅显示 ID,但我想要她的姓名,以及句子是什么?” ...

如果 Marca、Producto 和 SubProducto 也是 Id,那么就像使用 Id_Cliente 一样,您将需要加入这些键引用的任何表。例如,如果有 Products 表,您将添加:

SELECT C.P_Nombre, P.Nombre -- (Or whatever column has the product name)
FROM t_servicio T
    INNER JOIN cat_clientes C ON C.Id = T.Id_Cliente
    INNER JOIN Products P ON P.Id = C.Producto
WHERE C.P_Nombre LIKE '%queso%'

SubProducto 和 Marca 相同。

【讨论】:

  • 谢谢,INNER JOIN 更好:)
【解决方案2】:

希望我没有遗漏您的问题,但执行此操作的 SQL 很简单:

select s.Id_Servicio, c.Nombre
from cat_clientes c, t_servicio s
where c.Id = s.Id_Cliente
and c.Nombre like '%Uno%';

您可以扩展它(向输出添加更多列)以包含任一表中的其他列。假设您有其他表要链接在一起,您可以构建查询。您提到了 Marca、Producto 等表,但没有提供结构,所以我猜:

select s.Id_Servicio, m.Marca, p.Producto, c.Nombre
from cat_clientes c, t_servicio s, t_producto p, t_subproducto sp, t_marca m
where c.Id = s.Id_Cliente
and m.Id = s.Id_Marca
and p.Id = s.Id_Producto
and sp.Id = s.Id_SubProducto
and c.Nombre like '%Uno%';

【讨论】:

  • 例如,当获取结果时,Marca、Producto y SubProducto 列显示您的 ID,但我想要名称,那会是什么句子?
  • 您需要提供表名和链接它们的外键才能得到正确答案,但方法是一样的。
【解决方案3】:
SELECT * FROM `cat_clientes` AS c LEFT JOIN `t_servicio` AS t ON(c.id = t.Id_Cliente)

【讨论】:

  • 这会加入表格但不能完全回答问题,因为 OP 想知道如何使用 LIKE 来搜索匹配项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
相关资源
最近更新 更多