- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我构建了这段代码以从 mysql 中的 2 个表中选择 250 多个值。
我想得到每个名字对应的10个数值。每个表(table1 和 table2)的 5 个值
从表 1 中,我选择了 5 个与名称对应的值并将它们放入关联数组中。如果该值为“-50”,我将取消设置该值。
从表 2 中,与名称对应的 5 个值也对应于表 1 的一个值。我将它们放入一个关联数组中,如果该值小于 0.35,我将取消设置 table1 的相应值。
我执行所有这些操作以从高到低对 table1 中的 5 列中的每一列进行排序(删除 -50 和 <0.35 值)。
从数据库中选择数据:
//Names that correspond to 5 values in table1 and 5 in tab
$names = array(
'aatrox', 'ahri', 'akali', 'alistar', 'amumu', 'anivia', 'annie',
'ashe', 'azir', 'bard', 'blitzcrank', 'brand', 'braum', 'caitlyn',
'cassiopeia', 'chogath', 'corki', 'darius', 'diana', 'drmundo',
'draven', 'ekko', 'elise', 'evelynn', 'ezreal', 'fiddlesticks', 'fiora',
'fizz', 'galio', 'gangplank', 'garen', 'gnar', 'gragas', 'graves',
'hecarim', 'heimerdinger', 'irelia', 'janna', 'jarvaniv', 'jax',
'jayce', 'jinx', 'kalista', 'karma', 'karthus', 'kassadin', 'katarina',
'kayle', 'kennen', 'khazix', 'kogmaw', 'leblanc', 'leesin', 'leona',
'lissandra', 'lucian', 'lulu', 'lux', 'malphite', 'malzahar', 'maokai',
'masteryi', 'missfortune', 'mordekaiser', 'morgana', 'nami', 'nasus',
'nautilus', 'nidalee', 'nocturne', 'nunu', 'olaf', 'orianna',
'pantheon', 'poppy', 'quinn', 'rammus', 'reksai', 'renekton', 'rengar',
'riven', 'rumble', 'ryze', 'sejuani', 'shaco', 'shen', 'shyvana',
'singed', 'sion', 'sivir', 'skarner', 'sona', 'soraka', 'swain',
'syndra', 'tahmkench', 'talon', 'taric', 'teemo', 'thresh', 'tristana',
'trundle', 'tryndamere', 'twistedfate', 'twitch', 'udyr', 'urgot',
'varus', 'vayne', 'veigar', 'velkoz', 'vi', 'viktor', 'vladimir',
'volibear', 'warwick', 'wukong', 'xerath', 'xinzhao', 'yasuo', 'yorick',
'zac', 'zed', 'ziggs', 'zilean', 'zyra'
);
//Array for table1
$table1 = array();
//Array for table2
$table2 = array();
$numNames = count($names);
//Selecting 5 values (topratio, jungleratio, midratio, adcratio, supportratio) from table1 and corresponding them to their name.
for($i = 0; $i < $numNames; $i++){
$query = $dbconn->query("SELECT topratio, jungleratio, midratio,
adcratio, supportratio
FROM table1
WHERE name = '".$names[$i]."'
ORDER BY Id DESC LIMIT 1");
$table1[$names[$i]] = $query->fetch_assoc();
};
//Selecting 5 values (topdiapr, junglediapr, middiapr, adcdiapr, supportdiapr) from table2 and corresponding them to their name.
for($i = 0; $i < $numNames; $i++){
$query = $dbconn->query("SELECT topdiapr, junglediapr, middiapr,
adcdiapr, supportdiapr
FROM table2
WHERE name = '".$names[$i]."'
ORDER BY Id DESC LIMIT 1");
$table2[$names[$i]] = $query->fetch_assoc();
};
print_r($table1)
返回以下内容:
Array (
[Aatrox] => Array (
[topratio] => 7.59
[jungleratio] => 0.55
[midratio] => -50
[adcratio] => -50
[supportratio] => -50
)
[Ahri] => Array (
[topratio] => -50
[jungleratio] => -50
[midratio] => 6.85
[adcratio] => -50
[supportratio] => -50
)
...
This continues until last name
)
删除 -50 值和 <0.35
//I run 5 times this code because there are 5 columns in table1
for($b = 0; $b < 5; $b++){
//If value corresponding to a name in table1 is -50, unset
for($a = 0; $a < $numNames; $a++){
if(($key = array_search(-50, $table1[$names[$a]])) !== false) {
unset($table1[$names[$a]][$key]);
}
}
}
//If value corresponding to a name in table2 (topdiapr) is < than 0.35, unset corresponding value in table1 (topratio)
for($a = 0; $a < $numNames; $a++){
if(($table2[$names[$a]][topdiapr])<0.35) {
unset($table1[$names[$a]][topratio]);
}
}
//Same that previous one but with junglediapr and jungleratio
for($a = 0; $a < $numNames; $a++){
if(($table2[$names[$a]][junglediapr])<0.35) {
unset($table1[$names[$a]][jungleratio]);
}
}
//Same that previous one but with middiapr and midratio
for($a = 0; $a < $numNames; $a++){
if(($table2[$names[$a]][middiapr])<0.35) {
unset($table1[$names[$a]][midratio]);
}
}
//Same that previous one but with adcdiapr and adcratio
for($a = 0; $a < $numNames; $a++){
if(($table2[$names[$a]][adcdiapr])<0.35) {
unset($table1[$names[$a]][adcratio]);
}
}
//Same that previous one but with supportdiapr and supportratio
for($a = 0; $a < $numNames; $a++){
if(($table2[$names[$a]][supportdiapr])<0.35) {
unset($table1[$names[$a]][supportratio]);
}
}
最后,我得到了每一列的数组并将它们从高到低排序:
//topratios list. This applies too to jungleratios, midratios, adcratios and supportratios.
$topratios = array();
for($c = 0; $c < $numNames; $c++){
$topratios[$names[$c]] = $table1[$names[$c]][topratio];
}
$topratios = array_filter($topratios);
arsort($topratios);
运行这个,
foreach ($supportratios as $key => $val) {
echo 'Support: '.$key.'> '.$val.'<br>';
}
正确返回我想要得到的:
Support: Brand > 11.54
Support: Blitzcrank > 9.23
Support: Janna > 6.58
Support: Leona > 5.44
Support: Nami > 5.43
Support: Nautilus > 5.23
Support: Zyra > 4.66
Support: Soraka > 3.84
Support: Zilean > 3.71
Support: VelKoz > 2.22
Support: Braum > 2.22
Support: Bard > 2.14
Support: Sona > 1.46
Support: Thresh > 0.59
Support: Taric > 0.45
Support: Morgana > 0.37
Support: Shen > -0.77
Support: Alistar > -1.24
Support: Lulu > -1.7
Support: Kennen > -2.45
Support: Karma > -2.97
Support: Annie > -3.5
Support: Fiddlesticks > -5.38
Support: Tahm Kench > -7.98
我想知道是否有更快更简单的方法来做到这一点。另外我想知道是否有其他方法可以执行 250 多个查询。
最佳答案
我真的不知道这是否会有所帮助,但也许它可能...
$names=array('aatrox', 'ahri', 'akali', 'alistar', 'amumu', 'anivia', 'annie', 'ashe', 'azir', 'bard',
'blitzcrank', 'brand', 'braum', 'caitlyn', 'cassiopeia', 'chogath', 'corki', 'darius', 'diana', 'drmundo',
'draven', 'ekko', 'elise', 'evelynn', 'ezreal', 'fiddlesticks', 'fiora', 'fizz', 'galio', 'gangplank',
'garen', 'gnar', 'gragas', 'graves', 'hecarim', 'heimerdinger', 'irelia', 'janna', 'jarvaniv', 'jax',
'jayce', 'jinx', 'kalista', 'karma', 'karthus', 'kassadin', 'katarina', 'kayle', 'kennen', 'khazix',
'kogmaw', 'leblanc', 'leesin', 'leona', 'lissandra', 'lucian', 'lulu', 'lux', 'malphite', 'malzahar',
'maokai', 'masteryi', 'missfortune', 'mordekaiser', 'morgana', 'nami', 'nasus', 'nautilus', 'nidalee',
'nocturne', 'nunu', 'olaf', 'orianna', 'pantheon', 'poppy', 'quinn', 'rammus', 'reksai', 'renekton',
'rengar', 'riven', 'rumble', 'ryze', 'sejuani', 'shaco', 'shen', 'shyvana', 'singed', 'sion', 'sivir',
'skarner', 'sona', 'soraka', 'swain', 'syndra', 'tahmkench', 'talon', 'taric', 'teemo', 'thresh',
'tristana', 'trundle', 'tryndamere', 'twistedfate', 'twitch', 'udyr', 'urgot', 'varus', 'vayne',
'veigar', 'velkoz', 'vi', 'viktor', 'vladimir', 'volibear', 'warwick', 'wukong', 'xerath', 'xinzhao',
'yasuo', 'yorick', 'zac', 'zed', 'ziggs', 'zilean', 'zyra');
$sql1="select `name`, `topratio`, `jungleratio`, `midratio`, `adcratio`, `supportratio`
from `table1`
where `name` in ('". implode( "','", $names ) ."')
and ( `topratio` != -50 and `topratio` >= 0.35 )
and ( `jungleratio` != -50 and `jungleratio` >= 0.35 )
and ( `midratio` != -50 and `midratio` >= 0.35 )
and ( `adcratio` != -50 and `adcratio` >= 0.35 )
and ( `supportratio` != -50 and `supportratio` >= 0.35 );";
$sql2="select `name`, `topdiapr`, `junglediapr`, `middiapr`, `adcdiapr`, `supportdiapr`
from `table2`
where `name` in ('". implode( "','", $names ) ."')
and ( `topratio` != -50 and `topratio` >= 0.35 )
and ( `junglediapr` != -50 and `junglediapr` >= 0.35 )
and ( `middiapr` != -50 and `middiapr` >= 0.35 )
and ( `adcdiapr` != -50 and `adcdiapr` >= 0.35 )
and ( `supportdiapr` != -50 and `supportdiapr` >= 0.35 )";
关于php - 简化php代码按列和排序结果从mysql数据库中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629041/
是否有某种方法可以使用 JPA 或 Hibernate Crtiteria API 来表示这种 SQL?或者我应该将其作为 native 执行吗? SELECT A.X FROM (SELECT X,
在查询中, select id,name,feature,marks from (....) 我想删除其 id 在另一个 select 语句中存在的那些。 从 (...) 中选择 id 我是 sql
我想响应用户在 select 元素中选择一个项目。然而这个 jQuery: $('#platypusDropDown').select(function () { alert('You sel
这个问题在这里已经有了答案: SQL select only rows with max value on a column [duplicate] (27 个回答) 关闭8年前。 我正在学习 SQL
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我在 php 脚本中调用 SQL。有时“DE”中没有值,如果是这种情况我想从“EN”中获取值 应该是这样的,但不是这样的 IF (EXISTS (SELECT epf_application_deta
这可能是一个奇怪的问题,但不知道如何研究它。执行以下查询时: SELECT Foo.col1, Foo.col2, Foo.col3 FROM Foo INNER JOIN Bar ON
如何在使用 Camera.DestinationType.FILE_URI. 时在 phonegap camera API 中同时选择或拾取多个图像我能够一次只选择一张图像。我可以使用 this 在
这是一个纯粹的学术问题。这两个陈述实际上是否相同? IF EXISTS (SELECT TOP 1 1 FROM Table1) SELECT 1 ELSE SELECT 0 相对 IF EXIS
我使用 JSoup 来解析 HTML 响应。我有多个 Div 标签。我必须根据 ID 选择 Div 标签。 我的伪代码是这样的 Document divTag = Jsoup.connect(link
我正在处理一个具有多个选择框的表单。当用户从 selectbox1 中选择一个选项时,我需要 selectbox2 active 的另一个值。同样,当他选择 selectbox2 的另一个值时,我需要
Acme Inc. Christa Woods Charlotte Freeman Jeffrey Walton Ella Hubbard Se
我有一个login.html其中form定义如下: First Initial Plus Last Name : 我的do_authorize如下: "; pri
$.get( 'http://www.ufilme.ro/api/load/maron_online/470', function(data
我有一个下拉列表“磅”、“克”、“千克”和“盎司”。我想要这样一种情况,当我选择 gram 来执行一个函数时,当我在输入字段中输入一个值时,当我选择 pounds 时,我想要另一个函数来执行时我在输入
我有一个 GLSL 着色器,它从输入纹理的 channel 之一(例如 R)读取,然后写入输出纹理中的同一 channel 。该 channel 必须由用户选择。 我现在能想到的就是使用一个 int
我想根据下拉列表中的选定值生成输入文本框。 Options 2 3 4 5 就在这个选择框之后,一些输入字段应该按照选定的数字出现。 最佳答案 我建议您使用响应式(Reac
我是 SQL 新手,我想问一下如何根据首选项和分组选择条目。 +----------+----------+------+ | ENTRY_ID | ROUTE_ID | TYPE | +------
我有以下表结构: CREATE TABLE [dbo].[UTS_USERCLIENT_MAPPING_USER_LIST] ( [MAPPING_ID] [int] IDENTITY(1,1
我在移除不必要的床单时遇到了问题。我查看了不同的论坛并将不同的解决方案混合在一起。 此宏删除工作表(第一张工作表除外)。 Sub wrong() Dim sht As Object Applicati
我是一名优秀的程序员,十分优秀!