我正在尝试将多个表连接在一起,但是当某些产品有超过1张图片附加它们时,我遇到了一些麻烦.
Products Pictures
Id pic_id
name pic_name
picture_id
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT id, name, pic_name
FROM Products
LEFT OUTER JOIN Pictures p ON id=pic_id
Run Code Online (Sandbox Code Playgroud)
这显示了类似的东西
1 RAM ram.png
1 RAM ram2.png
1 RAM ram4.png
2 CPU test.png
Run Code Online (Sandbox Code Playgroud)
我想展示类似的东西
1 RAM ram.png, ram2.png, ram4, png
2 CPU test.png
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
是否可以通过SQL查询找到外键关系?
数据库在我外部,我无法直接访问它以通过Server Management Studio查看链接.
我在sql 2012中有两个表:name和prod with structure:
名称:id int increment, name1 nvarchar(50)
刺激:id int increment, products nvarchar(50), id_name int
表的值是:
名称表:
Id name1
1 pop
2 andi
Run Code Online (Sandbox Code Playgroud)
产品表:
Id products id_name
1 coke 1
2 pizza 1
3 orange 2
Run Code Online (Sandbox Code Playgroud)
我做了这个查询:
select name.name1, prod.product, prod.id_name
from name
join prod on name.id=prod.id_name
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得这个结果:
pop ->coke, pizza
andi->orange
Run Code Online (Sandbox Code Playgroud) 我必须编写一个查询,该查询返回的图书价格大于同类图书的平均价格。因此,我使用以下查询进行了此操作:
select title
from titles
where price >
(
select avg(price)
from titles
group by type
)
Run Code Online (Sandbox Code Playgroud)
但是,它将引发此错误:
subquery returned more than 1 value
Run Code Online (Sandbox Code Playgroud)
可以理解>不能用于值列表。但是我想知道解决这个问题的方法。请让我知道我需要使用的查询。DB是酒吧
titles table:
title_id , title, type, price, advance, notes, sales
Run Code Online (Sandbox Code Playgroud)
所以我需要获得价格>相似类型的平均值(价格)的标题
我有一个MySQL数据库.所有字段,我分配,我有我的日期字段的日期戳.它自动生成YYYY-MM-DD HH:MM:SS这样的2011-11-21 21:31:37
但是,我希望它在两个不同的列中这样做:
带YYYY-MM-DD或的日期字段2011-11-21
带HH:MM:SS或的时间字段21:31:37
这是我的插入PHP代码
$sql= "INSERT INTO `db`.`table` (`id` ,`fkid` ,`paid` ,`date`)
VALUES (NULL, '$userid', '0', CURRENT_TIMESTAMP);";
Run Code Online (Sandbox Code Playgroud)
我尝试过CURRENT_DATESTAMP,但它不起作用.
问题的第二部分是:如何制作表格,使其适用于正确的代码?该字段的结构应该是文本类型还是日期?
我在MYSQL中有2个表将由外键连接.每个表都有自己的日期字段.我想要做的是将这两个日期字段组合在一起,然后按组合信息排序.我知道您可以通过多个字段进行排序,但我认为不会将它们组合在一起.
例
Join by tickets.ticket_id = ticket_history.ticket_id
Run Code Online (Sandbox Code Playgroud)
表格1
ticket_date
表2
ticket_history_date
目标合并两个日期字段,然后按组合日期对行进行排序
我收到一条错误消息:
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行'key ='12345'和id ='98765'LIMIT 1'附近使用正确的语法
我的代码是:
$key = '12345';
$id = '98765';
include realpath('./inc/config.php');
$query = mysql_query("SELECT * FROM users WHERE key='{$key}' AND id='{$id}' LIMIT 1", $config) or die(mysql_error());
$result = mysql_fetch_assoc($query);
Run Code Online (Sandbox Code Playgroud)
现在有谁能告诉我这有什么不对吗?
我正在尝试创建索引视图,并在创建索引时遇到以下错误:
无法在视图....'上创建索引,因为WHERE或GROUP BY子句中视图引用的列'Amount'不精确。考虑从视图中删除该列,或者精确地更改该列。
有问题的列的数据类型是real我想出现的问题?
解决这个问题的合适方法是什么?我可以在视图SQL中进行转换以消除“不精确性”吗?
视图SQL在下面指定:
EXEC('
CREATE VIEW model.ReceivableBillableParties
WITH SCHEMABINDING
AS
SELECT pf.Id AS Id
, pf.InsuranceId AS InsuranceId
, pf.FinancialInsType AS InsuranceType
, pr.ReceivableId
FROM dbo.Receivables pr
INNER JOIN dbo.Demographics pd ON pd.PersonId = pr.PersonId
INNER JOIN dbo.Appointments ap ON ap.AppointmentId = pr.AppointmentId
INNER JOIN dbo.Financiasl pf ON pf.PersonId = pf.PersonId
INNER JOIN dbo.PracticeInsurers pri ON pri.InsurerId = pf.FinancialInsurerId
WHERE pri.Amount = 0
')
EXEC('
CREATE UNIQUE CLUSTERED INDEX [IX_ReceivableBillableParties]
ON model.ReceivableBillableParties ([Id]);
')
Run Code Online (Sandbox Code Playgroud) 我知道如何在pl sql中创建一个序列.但是,我如何将值设置为3个数字呢?在创建序列时是否有另一个sql语句来执行此操作?
所以一个例子是:
000
001
012
003
Run Code Online (Sandbox Code Playgroud)
多谢你们!
我正在为我的mmorpg制作基于经验点的排名系统.假设我有2张桌子,
每个等级都需要特定数量的exp来升级.现在让我们说用户名:我有550 exp,而在table2我们有:
现在我想要php函数通过检查我的exp对表2 exp我仍然在rank1虽然我的exp不是exp列中的值.我尽了最大努力,得到了:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result,
boolean given in... line 6
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
function expToRank($userexp)
{
global $mysqli;
$sql="SELECT TOP 1 *
FROM table2
WHERE ABS(".$userexp."-exp) =
( SELECT MIN( ABS(".$userexp."-exp)) from table2 )";
$result=mysqli_query($mysqli,$sql);
$rankarray=mysqli_fetch_array($result,MYSQLI_ASSOC);
$rankname=$rankarray["rankname"];
return $rankname;
}
Run Code Online (Sandbox Code Playgroud)
提示:2 exp列是BIGINT(60).