2 Tabellen Auslesen SQL PHP JSON für Android App

AndiBauer

Grünschnabel
Hallo :)
ich bin gerade dabei eine PHP Datei zu schreiben (bin Anfänger) mit der ich 2 verschiedene Tabellen in der selben Datenbank auslesen kann.

Mein Code:
PHP:
<?php

if($_SERVER["REQUEST_METHOD"]=="POST"){
   include 'connectionTemp.php';
   showTemp();
}

function showTemp()
{
   global $connect;

   $query = " SELECT * FROM sensoren34, sensoren38 WHERE sensoren34.id = sensoren38.id ";

   $result = mysqli_query($connect, $query);
   $number_of_rows = mysqli_num_rows($result);

   $temp_array = array();

   if($number_of_rows > 0){
     while ($row = mysqli_fetch_assoc($result)) {
        $temp_array[] = $row;
     }
   }

   header('Content-Type: application/json');
   echo json_encode(array("temps"=>$temp_array));
   mysqli_close($connect);


}
?>
Soweit funktioniert es auch schon :) aber es werden alle Daten aus den zwei Tabellen ausgelesen und ich brauche nur die zuletzt hinzugefügten.

Deswegen habe ich das gemacht:

$query = " SELECT * FROM sensoren34, sensoren38 WHERE sensoren34.id = 'sensoren38.id' ORDER BY id DESC LIMIT 1";

Das Funktioniert aber nicht, dann kommt garnichts mehr!

Kann mir von euch einer sagen was ich falsch mache?

Danke
 
Zuletzt bearbeitet von einem Moderator:
Hi

Da beide Tabellen (sensoren34, sensoren38) Spalten namens id haben
solltest du auch im OrderBy angeben, welches der zwei id gemeint ist.
 
Danke für deine schnelle Antwort :)

wenn ich dann ORDER BY sensoren34.id angebe, werden dann nur von der tabelle sensoren34 die aktuellsten werte genommen oder von beiden tabellen?

Danke :)
 
Da du ja nur IDs nimmst, die in beiden Tabellen vorkommen (und dann
eben nur Ausgabezeilen, wo beide IDs gleich sind), ist das alles das Selbe.
 
ah okey verstehe.
ich habe in beiden Tabellen spalten mit id | uhrzeit | datum.
würde es funktionieren die zuletzt eingestellten Daten anhand der Uhrzeit und dem datum zu filtern?
Bei der id passiert es, dass die Daten mit der gleichen ID ausgegeben werden aber das sind nicht immer die zuletzt eingegebenen Daten in die Tabelle.

würde es so funktionieren:

$query = " SELECT * FROM sensoren34, sensoren38 WHERE sensoren34.uhrzeit = sensoren38.uhrzeit, sensoren34.datum = sensoren38.datum ORDER BY sensoren34.uhrzeit DESC LIMIT 1";

oder wie müsste man das machen?

Vielen Dank für deine gute Hilfe :)
 
Also, du willst/brauchst den letzten Eintrag aus Tabelle 1 kombiniert mit dem letzten aus Tabelle zwei?
Warum nicht einfach zwei unabhängige Abfragen?
SQL:
SELECT * FROM sensoren34 ORDER BY datum,uhrzeit DESC LIMIT 1
SELECT * FROM sensoren38 ORDER BY datum,uhrzeit DESC LIMIT 1
und dann in PHP passend kombinieren.

Sonstiges:

Statt den Spalten Datum und Uhrzeit (jeweils Text?) wäre eine Spalte mit Typ Timestamp sinnvoller
(universeller einsetzbar, bessere Unterstützung von zeit-bezogenen Sachen in der DB, usw.)

Und falls es 38 Tabellen sensoren1 bis sensoren38 gibt, bitte umdenken.
Das kann man alles in eine Tabelle packen.
 
Zurück