PHP Запрос столбца таблицы на основе значения из другого столбца в той же таблице - PullRequest
0 голосов
/ 27 февраля 2019

enter image description here У меня есть база данных, которую я должен запросить, используя PHP.Есть 3 разных столбца, с которыми я имею дело.То, что я должен сделать, требует нескольких шагов, поэтому я перечислю шаги 1 на 1 ...... 1) Я должен просмотреть каждое значение в столбце 'nid'.Тем не менее, некоторые из 'nids' имеют двойное значение.Поэтому я должен выбрать 'nid' с наибольшим значением 'vid'.2) Как только я выберу 'nid' с наибольшим значением 'vid', я должен получить значение столбца 'title', который находится в той же строке с самым высоким значением 'vid'.Например, если у меня «vid» 1253, я должен выбрать контент в заголовке столбца, который соответствует «vid» 1253. У меня много шагов.Тем не менее, я застреваю, как только я получаю самый высокий видео, и могу получить содержимое в столбце заголовка.Ниже мой код

<?php
    // Establish all database credential variables
    $serverName = "localhost";
    $username = "root";
    $password = "root";
    $databaseName = "redesign_static";
    // Create Database Connection
    $connection = new mysqli($serverName, $username, $password, $databaseName);
    // Check Database Connection
    if ($connection->connect_error) {
      die("Connection failed:" . $connection->connect_error);
    } // line ends if statement
    $queryNodeRevision = "SELECT nid, vid, title FROM node_revision";
    // line above creates variable $queryNodeRevision > selects column "nid" from table "node_revision"
    $results = mysqli_query($connection, $queryNodeRevision) or die("Bad Query: $results");
    // line above creates variable $results > actually queries that database and passes in variable "$queryNodeRevision"
    $storeNIDAndVIDValues = []; // empty array to store max 'vid' values

    for ($i = 0; $i < 8000; $i++) {
      $storeNIDAndVIDValues[$i] = 0;
      // line above assigns initial 'vid'; starts at 0
    }

    while ($row = mysqli_fetch_array($results)) {
      $currentNID = $row['nid'];
      // line above creates variable that represents the current 'nid' of row (aka the key)
      $currentVID = $row['vid'];
      // line above creates variable that represents the current value of the 'vid' (the number you want to compare)
    if ($currentVID > $storeNIDAndVIDValues[$currentNID]) {
        // if the value of'$currentVID' is greater than what's stored in array '$storeNIDAndVIDValues' at current nid position
        // $storeNIDAndVIDValues[$currentNID] = goes into array $storeNIDAndVIDValues and gets the value of nid key (in this case value represents what position the nid is at)
           $storeNIDAndVIDValues[$currentNID] = $currentVID;
           // line above > becomes max 'vid' at that time 
           $titleOfSelectedVID = $row['title'];
          // $row['title'] = gets the value of the current 'title'
        $queryTitle = "SELECT title FROM node_revision WHERE $currentVID ";
        // line above is query variable that targets 'title' column row that has highest 'vid' value
     } // line ends if statement
    } // line closes while loop
  ?>

$queryTitle = "SELECT title FROM node_revision WHERE

В строке $ queryTitle я застреваю.Здесь я хочу получить содержимое заголовка столбца, но только заголовок, который соответствует наивысшему vid.

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте написать запрос, как показано ниже

SELECT a.* FROM node_revision as a INNER JOIN (SELECT MAX(vid) as vid, nid FROM node_revision GROUP BY nid) as b on a.nid = b.nid WHERE a.vid = b.vid 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...