我有一个有三个表的关系数据库.第一个包含与第二个相关的id.第二个包含与第三个相关的id.第三个包含我追求的结果.
是否可以使用单个查询来查询第一个表中的id,该表给出了与第三个表相关的所有结果?
对不起,我是mySQL的新手.
我最近问了这个问题.
我有一个有三个表的关系数据库.第一个包含与第二个相关的id.第二个包含与第三个相关的id.第三个包含我追求的结果.
是否可以使用单个查询来查询第一个表中的id,该表给出了与第三个表相关的所有结果?
我选择的解决方案是:
select*from table1 t1 join table2 t2 on t1.t2ref = t2.id join table3 t3 on t2.t3ref = t3.id
添加where子句以搜索table1中的某些行
其中t1.field ='value'
我的新问题是:
我意识到我也需要插入三个表格.我正在处理的是一个预订系统.是否可以编写一个查询,在查询后直接插入三个表(使用连接?).
我还有另外一个考虑因素是我应该使用事务来确保同时运行两个查询...都发现id是"未保留"然后导致双重预订或者是否有更简单的方法?
是否可以使用带有大量OR的WHERE语句?我想最多可能是500.
我正在处理一个Facebook应用程序.可以理解(但令人讨厌)他们不允许应用程序开发人员存储朋友关系.因此,我不能做一个明智的JOIN tblfriend或类似的事情.
要获得朋友列表,您可以使用FQL查询facebook ...这将返回一个facebook用户ID数组.我的想法是找到一个用户最近的朋友,我可以运行这样的查询:
'SELECT * FROM user WHERE fb_id = ' . implode('OR fb_id = ', $friend_array) . ' ORDER BY created LIMIT 0,1';
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我正在尝试找出最好的方法来停止我的应用程序中的双重“预订”。
我有一个唯一ID的表,每个表只能出售一次。
我当前的想法是使用事务检查所选产品是否可用,然后将其插入到“状态”列中以表示已被“保留”,同时插入“更新时间”,然后用户继续操作。支付我将状态更新为“出售”。
每隔10分钟,我都会进行一次cron作业检查,以检查“状态” =“保留”,该检查已在10多分钟前进行了更新,并删除了这些行。
有没有更好的办法?我从未使用过交易(我刚刚听到过类似的词),所以如果有人可以解释我将如何做到这一点,那将是王牌。
阻止用户向字段添加html或javascript的最安全方法是什么?我正在添加一个youtube风格的"描述",用户可以在其中解释他们的工作,但我不想要除了纯文本之外的任何内容,并且最好没有像"<"或">"那样的htmlentities垃圾.
我可以这样做:
$clean = htmlentities($_POST['description']);
if ($clean != $_POST['description']) ... then return the form with an error?
Run Code Online (Sandbox Code Playgroud) 有人请指出为什么这个脚本不起作用.它起初是一个AJAX脚本,我一行一行地走了,直到我留下了一个包含警报的功能,它仍然无法在IE中运行.所以请有人让我摆脱痛苦.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Lang" content="en">
<meta name="author" content="">
<meta http-equiv="Reply-to" content="@.com">
<meta name="generator" content="PhpED 5.6">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="creation-date" content="11/11/2008">
<meta name="revisit-after" content="15 days">
<title>Untitled</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script type="application/javascript">
function showUser()
{
alert('blah');
}
</script>
</head>
<body>
<input type="button" onclick="showUser()" />
</body>
Run Code Online (Sandbox Code Playgroud)
我的应用程序上的每个页面都会显示1000条记录,只需在该页面上显示.
拥有一个带有额外"页面ID"列的巨大表格或为每个页面创建一个新表格会更有效吗?
我想从一个小表访问数据比一个大表更容易,但它会使数据库有点混乱.
有什么想法吗?
我正在开发一个应用程序,用户可以"争取"拥有地图的大部分内容.每张地图由1000个地区组成.现在我的初步计划是将用户拥有的区域存储为逗号分隔的字符串,例如
用户拥有区域1到10 1,2,3,4,5,6,7,8,9,10
问题是用户可能拥有所有1000个,这意味着它可能是一个长度为3893个字符的字符串...我将其存储为varchar(3893)...这看起来非常低效.
我确实考虑过二元解决方案,例如
1111111111接着是990 0
这是一个很好的解决方案,如果只有一个用户拥有整个网格因为这是1000个字符,但它的4个或更多那么它的效率较低.
此外,我需要考虑一种易于计算回逗号分隔字符串的方法,因为这是我的javascript将如何使用它.
谢谢,
关于使用会话变量的最佳做法是什么?
最好只将它们称为会话变量,还是在脚本开头将它们转移到同名的局部变量时更好?
我对我的应用程序的最佳文件夹/文件结构有点困惑,如果有人有一个有用的链接,那将是非常有用的..谢谢.
我一直在寻找一个正则表达式,只会吐出'stackoverflow'部分而没有www.我所能找到的只是检查网址是否有效......我已经使用了php的网址过滤器确定了我现在正在寻找的网站.
我之前从未写过表达式,因此我希望有人可以检查/推荐更好的解决方案.
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
Run Code Online (Sandbox Code Playgroud)
编辑:我正在处理的所有网址都是.com,如果有帮助的话
mysql ×6
database ×5
php ×5
insert ×2
join ×2
relational ×2
arrays ×1
expression ×1
hostname ×1
javascript ×1
performance ×1
regex ×1
security ×1
transactions ×1