如何配对这些数据库行?

时间:2015-07-28 18:52:42

标签: php sql database phpmyadmin

所以,我有这个数据库,我需要知道有多少profile.stateX-profile.licenseX有价值并且还要配对它们。我能够将它们拉成阵列,但我无法找到适当的PHP代码来获得我需要的东西。

同样,我需要知道的是:

1:我有多少profile.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>
&#13;
&#13;
&#13;

我希望这是有道理的。

database img

1 个答案:

答案 0 :(得分:2)

假设数据库是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.stateprofile_key后的数字。然后我们使用CONCAT()将其附加到profile.license以获取配对行的profile_key