我有两个表 - 小工具和用法。小工具有一个唯一 ID 和相应的字段。而“使用情况”显示了小工具的旧 ID 值和新 ID 值等使用情况。
Gadgets TABLE
ID & gadgetName
USAGE TABLE
oldID & newID
现在我想使用 input = gadgetName 在它们之间进行映射
让字段就像这样
Gadgets
ID gadgetName
+++ ++++++++++++
id1 nokia
id2 motog
id3 xiamoi
id4 micromax
使用表就像
Usage Table
oldID newID
+++++ ++++++
id1 id2
id2 id3
id3 id4
id2 id4
现在,输入为 micromax ,我想从 gadget 表中检索 gadgetName,该表存在于 oldID 中,而 newID 为 micromax。
就像 o/p 一样:
oldIDgadgetName
++++++++++++++++
xiamoi
motog
编辑:
我试过这个:
SELECT gadgets.gadgetName, gadgets.ID FROM usage, gadgets
WHERE usage.oldID IN (
SELECT usage.oldID FROM usage , gadgets
WHERE usage.newID = gadgets.ID AND gadgets.gadgetName= ".$datawon."
)" );
&我没有得到想要的输出... 。 我想在这里申请加入..请指导我。
最佳答案
实现此目的的一种方法是加入 Gadget 表两次:
select g2.gadgetName as oldIDgadgetName
from Gadgets g1
join Usage u on g1.ID = u.newID
join Gadgets g2 on g2.ID = u.oldID
where g1.gadgetName = 'micromax'
给定您的示例数据,这将返回:
oldIDgadgetName
---------------
motog
xiamoi
这也可以完全不使用连接来编写(但它的性能可能会更差),如下所示:
select gadgetName
from Gadgets
where id in (
select oldid
from Usage
where newID in (
select id
from Gadgets
where gadgetName = 'micromax'
)
)
关于mysql - join sql命令的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381947/