我有两个表[tags]和[tags_to_item]
Address 0x4008e6: 01 0d 00 ff
第一个是标签表,第二个存储标签和商品
之间的关系例如
第12项与标记“Ninja”相关联。第3项与 标签' Pirate'和' Spaghetti'
给出这些表格 我想加入他们,这样我就可以显示所有可用的标签,但是显示哪些标签与给定的商品ID相关联
好吧我想检查item_id = 3
期望的输出:
tag_id name tag_id item_id
------ ------- ------ -------
1 Pirate 1 3
2 Monkey 2 9
3 Ninja 3 12
4 Spaghetti 4 3
我尝试了这个查询,但它没有按预期工作......它没有显示完整列表
tag_id name item_id
------ ------- -------
1 Pirate 3
2 Monkey null
3 Ninja null
4 Spaghetti 3
更新:
感谢@Gordon我'越来越接近我需要的,这是一个不错的查询
SELECT a.name, a.tags_id, o.item_id from tags as a
left outer join tags_to_item as o on a.tags_id = o.tags_id WHERE o.item_id = 3
union all
select a.name, a.tags_id, o.item_id from tags as a
right outer join tags_to_item as o on a.tags_id = o.tags_id
答案 0 :(得分:0)
我认为这就是你想要的:
select t.tags_name, t.tags_id, tti.item_id
from tags t left join
tags_to_item tti
on a.tags_id = o.tags_id and tti.item_id = 3;
请注意,项目的条件已从where
子句移到on
子句。如果在where
子句中进行比较,则将外连接转换为内连接。
另外,我输入了更合理的表别名。不要使用像a
这样的任意字母作为表别名。使用表格缩写。
答案 1 :(得分:0)
在查询下方使用此功能。
function formSubmit(e)
{
// Function level variables
var date = e.values[0];
var name = e.values[1];
var phone = e.values[2];
// Get the spread sheet that contains the data
var ss = SpreadsheetApp.openById('1FpRbYC-
nfltxoalGV974aDX6A_fEy_MBYBShruRRYfM');
var sheet = ss.getSheetId(0);
if(sheet)
{
Logger.log(name);
}
else
{
Logger.log(phone)
}
// Add submission to DB
sheet.appendRow([date,name,phone]);
使用mysql case运算符。在case运算符下执行另一个sql查询。其中checked标签表有当前item_id或not.if标签表有item_id然后显示item_id其他明智地显示空字符串。