Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL динамичен напречен раздел

Броят и имената на колоните трябва да бъдат фиксирани по време на подготовката на заявката. Това е просто начинът, по който работи SQL.

Така че имате два избора как да разрешите това. И двата варианта включват писане на код на приложение:

(1) Запитване за различните стойности от way и след това напишете код, за да ги използвате за конструиране на обобщената заявка, като добавите толкова колони в списъка SELECT, колкото е броят на отделните стойности.

foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
  $way = (int) $row["way"];
  $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) .
   "FROM `MyTable` GROUP BY `stop`";

Сега можете да стартирате новата заявка и тя има толкова колони, колкото е броят на отделните way стойности.

$pivotstmt = $pdo->query($pivotsql);

(2) Запитвайте данните ред по ред както е структурирано във вашата база данни, и след това напишете код, който да се завърти в колони, преди да покажете данните.

$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
  $stopkey = $row["stop"];
  if (!array_key_exists($stopkey, $stoparray)) {
    $stoparray[$stopkey] = array("stop"=>$stopkey);
  }
  $waykey = "way_" . $row["way"];
  $stoparray[$stopkey][$waykey] = $row["time"];
}

Сега имате масив от масиви, който изглежда по същия начин, както ако сте изпълнили обобщена заявка, но действителният SQL, който сте изпълнили, е много по-прост. Вие сте обработили резултата от заявката в различен набор от масиви.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да персонализирам `show processlist` в mysql?

  2. Не може да се инициализира доставчик. Липсваща или неправилна схема. за MySql.Web конектор

  3. Добре ли е да използвате htmlspecialchars() преди вмъкване в MySQL?

  4. Regex - намиране на конкретно число в низ

  5. Възстановяване на MySQL бази данни при преинсталиране на Wamp