PHP, SQL: как использовать поле WHERE в Query для получения нескольких значений? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть база данных с ценами на манго, яблоки и апельсины, упорядоченные по дате.

Я хочу отфильтровать цены в таблице по ID.Я могу отфильтровать результаты, используя один идентификатор, и отобразить их в таблице.

Как я могу фильтровать по нескольким значениям идентификатора, используя WHERE в SQL, и отображать полученные данные в табличной форме?

<table style="float:left;">
  <tr>
    <th>Mango </th>
    <th>Apple</th>
    <th>Orange </th>
    <th>Date</th>

  </tr>
  <?php
  $dbhost ="localhost";  // hostname
  $dbuser="root"; // mysql username
  $dbpass="****"; // mysql password
  $db="****"; // database you want to use
  $conn= mysqli_connect( $dbhost, $dbuser, $dbpass, $db ) or die("Could not connect: " .mysqli_error($conn) );
  $sql = "SELECT MANGO, APPLE, ORANGE, DATE FROM dataTable WHERE ID='3' ORDER BY Date DESC LIMIt 1";
  $result = $conn->query ($sql);
  if($result ->num_rows>0){
    while($row = $result ->fetch_assoc()){
      echo "<tr><td>". $row["MANGO"]."</td><td>".$row["APPLE"]."</td><td>".$row["ORANGE"]."</td><td>".$row["DATE]."</td> </tr>";
    }
    echo "</table>";
  }else {echo "0 result";}
  $conn->close();
   ?>
</table>


Ответы [ 3 ]

4 голосов
/ 21 марта 2019

Рассмотрите возможность использования оператора IN для фильтрации с использованием последовательности значений ID.

Например, если вы хотите получить результаты, где ID=1 или ID=2 или ID=3:

$sql = "SELECT MANGO, APPLE, ORANGE, DATE FROM dataTable WHERE ID IN (1,2,3) ORDER BY Date DESC";


См. Выбор нескольких идентификаторов из таблицы , для получения дополнительной информации.

Вы также можете ознакомиться с дополнительной информацией об операторе IN здесь .

2 голосов
/ 21 марта 2019

Вы можете сделать это так SELECT MANGO, APPLE, ORANGE, DATE FROM dataTable WHERE ID='3' OR ID='4' и добавить столько OR, сколько хотите

1 голос
/ 22 марта 2019

Ваш дизайн стола нарушен.Плоды не должны быть столбцами.

Базы данных, такие как их данные, хорошо разделены, а отношения выражены через внутренние ключи (первичный ключ, внешний ключ).Если вы это сделаете, они будут очень быстрыми и надежными в его поиске, даже если у вас будет храниться сотни тысяч записей.

table "fruits"
id | name
 1, 'Mango'
 2, 'Orange'
 3, 'Apple'

table "fruits_date_prices"
id | fruit_id | price | date   
 1, 1, 1.30, '2019-03-20'
 2, 1, 1.35, '2019-03-21'
 3, 1, 1.37, '2019-03-22'
 4, 2, 0.87, '2019-03-20'
 5, 2, 0.86, '2019-03-21'
 6, 2, 0.84, '2019-03-22'
 7, 3, 0.34, '2019-03-20'
 8, 3, 0.36, '2019-03-21'
 9, 3, 0.35, '2019-03-22'

Запрос цен за день с использованием JOIN (например, двух таблиц).в один звонок "):

SELECT
    f.name AS fruit,
    fdp.price 
FROM 
    fruits AS f
LEFT JOIN
    fruits_date_prices AS fdp ON f.id = fdp.fruit_id
WHERE
    fdp.date = '2019-03-21'

Надеюсь, это немного поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...