Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porównanie dwóch tablic z różnymi nazwami kluczy

Nadaj jedno lub oba pola alias, aby pasowały do ​​​​klucza:

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";

Teraz jest klucz module zamiast modname .

Możesz użyć array_diff aby znaleźć różnicę między tablicami, o ile mają podobną strukturę. W twoim przypadku byłoby to usunięcie pozostałych dwóch kluczy z drugiego zapytania do bazy danych.

Na przykład:

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";
$result1 = $conn->query($sql1);
while ($row = $result1->fetch_assoc()){
   $indMods[] = $row;
}

$sql2 = "SELECT module FROM modules WHERE level = '$level'";
$result2 = $conn->query($sql2);
while ($row2 = $result2 -> fetch_assoc()){
   $allMods[] = $row2;
}

$difference = array_diff($indMods, $allMods);

Dokumentacja array_diff PHP :http://php.net/manual/en/function.array- diff.php

Zauważ, że można to zrobić na wiele sposobów. To tylko jeden.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja MySQL PREPARE w procedurach składowanych

  2. Kolejność nazwanych parametrów ma sens dla dostawcy danych MySql .Net?

  3. Jak automatycznie uzupełnić kilka tabel za pomocą DBEdit

  4. Wyzwalacze sql Mam błąd podczas przechowywania nazwy kolumny w zmiennej i używam jej dla OLD.myvar w wyzwalaczach sql

  5. Symbole, o których powinienem wiedzieć w przypadku wstrzykiwania SQL