如何配对那些数据库行?
How to pair those database rows?
所以,我有这个数据库,我需要知道有多少 profile.stateX-profile.licenseX 有价值,还要将它们配对。我可以将它们拉到一个数组中,但我找不到合适的 php 代码来获得我需要的东西。
同样,我需要知道的是:
1:我有多少个人资料。state1/2/3/4/5-profile。license1/2/3/4/5 对,价值
2:输出对
这是查询返回的数组:
<pre>
array(16) {
[0]=>
array(2) {
[0]=>
string(15) "profile.address"
[1]=>
string(10) "Bld. Indep"
}
[1]=>
array(2) {
[0]=>
string(21) "profile.certification"
[1]=>
string(7) "cert112"
}
[2]=>
array(2) {
[0]=>
string(16) "profile.license1"
[1]=>
string(5) "12345"
}
[3]=>
array(2) {
[0]=>
string(16) "profile.license2"
[1]=>
string(0) ""
}
[4]=>
array(2) {
[0]=>
string(16) "profile.license3"
[1]=>
string(0) ""
}
[5]=>
array(2) {
[0]=>
string(16) "profile.license4"
[1]=>
string(0) ""
}
[6]=>
array(2) {
[0]=>
string(16) "profile.license5"
[1]=>
string(0) ""
}
[7]=>
array(2) {
[0]=>
string(21) "profile.licensenumber"
[1]=>
string(7) "lice112"
}
[8]=>
array(2) {
[0]=>
string(14) "profile.school"
[1]=>
string(5) "nr, 2"
}
[9]=>
array(2) {
[0]=>
string(14) "profile.state1"
[1]=>
string(4) "Ohio"
}
[10]=>
array(2) {
[0]=>
string(14) "profile.state2"
[1]=>
string(0) ""
}
[11]=>
array(2) {
[0]=>
string(14) "profile.state3"
[1]=>
string(0) ""
}
[12]=>
array(2) {
[0]=>
string(14) "profile.state4"
[1]=>
string(0) ""
}
[13]=>
array(2) {
[0]=>
string(14) "profile.state5"
[1]=>
string(0) ""
}
[14]=>
array(2) {
[0]=>
string(18) "profile.user_state"
[1]=>
string(8) "Roumania"
}
[15]=>
array(2) {
[0]=>
string(11) "profile.zip"
[1]=>
string(3) "123"
}
}
</pre>
我希望这是有道理的。
假设数据库是MySQL:
SELECT t1.profile_key, t1.profile_value, t2.profile_key, t2.profile_value
FROM profile AS t1
JOIN profile AS t2 ON t2.profile_key = CONCAT('profile.license', SUBSTR(t1.profile_key, 14))
WHERE t1.profile_key LIKE 'profile.state%' AND t1.profile_value != ''
AND t2.profile_key LIKE 'profile.license%' AND t2.profile_value != ''
SUBSTR(t1.profile_key, 14)
获取 profile_key
列中 profile.state
之后的数字。然后我们使用 CONCAT()
将其附加到 profile.license
以获得配对行的 profile_key
。
所以,我有这个数据库,我需要知道有多少 profile.stateX-profile.licenseX 有价值,还要将它们配对。我可以将它们拉到一个数组中,但我找不到合适的 php 代码来获得我需要的东西。
同样,我需要知道的是:
1:我有多少个人资料。state1/2/3/4/5-profile。license1/2/3/4/5 对,价值
2:输出对
这是查询返回的数组:
<pre>
array(16) {
[0]=>
array(2) {
[0]=>
string(15) "profile.address"
[1]=>
string(10) "Bld. Indep"
}
[1]=>
array(2) {
[0]=>
string(21) "profile.certification"
[1]=>
string(7) "cert112"
}
[2]=>
array(2) {
[0]=>
string(16) "profile.license1"
[1]=>
string(5) "12345"
}
[3]=>
array(2) {
[0]=>
string(16) "profile.license2"
[1]=>
string(0) ""
}
[4]=>
array(2) {
[0]=>
string(16) "profile.license3"
[1]=>
string(0) ""
}
[5]=>
array(2) {
[0]=>
string(16) "profile.license4"
[1]=>
string(0) ""
}
[6]=>
array(2) {
[0]=>
string(16) "profile.license5"
[1]=>
string(0) ""
}
[7]=>
array(2) {
[0]=>
string(21) "profile.licensenumber"
[1]=>
string(7) "lice112"
}
[8]=>
array(2) {
[0]=>
string(14) "profile.school"
[1]=>
string(5) "nr, 2"
}
[9]=>
array(2) {
[0]=>
string(14) "profile.state1"
[1]=>
string(4) "Ohio"
}
[10]=>
array(2) {
[0]=>
string(14) "profile.state2"
[1]=>
string(0) ""
}
[11]=>
array(2) {
[0]=>
string(14) "profile.state3"
[1]=>
string(0) ""
}
[12]=>
array(2) {
[0]=>
string(14) "profile.state4"
[1]=>
string(0) ""
}
[13]=>
array(2) {
[0]=>
string(14) "profile.state5"
[1]=>
string(0) ""
}
[14]=>
array(2) {
[0]=>
string(18) "profile.user_state"
[1]=>
string(8) "Roumania"
}
[15]=>
array(2) {
[0]=>
string(11) "profile.zip"
[1]=>
string(3) "123"
}
}
</pre>
我希望这是有道理的。
假设数据库是MySQL:
SELECT t1.profile_key, t1.profile_value, t2.profile_key, t2.profile_value
FROM profile AS t1
JOIN profile AS t2 ON t2.profile_key = CONCAT('profile.license', SUBSTR(t1.profile_key, 14))
WHERE t1.profile_key LIKE 'profile.state%' AND t1.profile_value != ''
AND t2.profile_key LIKE 'profile.license%' AND t2.profile_value != ''
SUBSTR(t1.profile_key, 14)
获取 profile_key
列中 profile.state
之后的数字。然后我们使用 CONCAT()
将其附加到 profile.license
以获得配对行的 profile_key
。