• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus verschiedenen Tabellen in der DB auslesen

kercon

Mitglied
Hallo Leute,
leider habe ich hier nicht recht viel Ahnung :-(

Ich möchte anhand der Daten meiner Datenbank eine Preis- und Bestandsliste zur internen Verwendung ausgeben.
Bisher konnte mir "Freund Google" etwas weiterhelfen aber jetzt muss ich aber auf eine zweite Tabellen in der DB zugreifen...

Hiermal ein Teil...

Code:
<?php
$mysqlhost=" ****** "; 
$mysqluser=" ****** "; 
$mysqlpwd=" ****** "; 
$mysqldb=" ****** ";

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
$sql = "SELECT products_id, products_model, products_quantity, products_price FROM products";

***********************************
Hier müsste noch
products_name FROM products_description
eingefügt werden
...eine zweite $sql Zeile brauchte irgendwie nix
***********************************

$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
$anzahl = mysql_num_rows($adressen_query);
echo "Anzahl der Datensätze: $anzahl";
?>

<table>
<tr>
<td>ID</td>
<td>Artikel-Nummer</td>
<td>Artikel-Name</td>
<td>Standard-Preis</td>
<td>Bestand</td>
</tr>
    
<?php
while ($adr = mysql_fetch_array($adressen_query)){
?>

<tr>
<td><?=$adr['products_id']?></td>
<td><?=$adr['products_model']?></td>

***************************************
<td><?=$adr['products_name']?></td>
***************************************

<td><?=$adr['products_price']?></td>
<td><?=$adr['products_quantity']?></td>
</tr>

<?php   }   ?>
</table>

Leider weiß ich nicht so recht, nach was ich suchen muss :-(

schonmal vielen Dank!

MfG
 
Werbung:
Soweit ich das verstehe brauchst Du eine Ergebnismenge, also auch ein einzelnes Statement. Ein Beispiel für die Verknüpfung mehrere Tabellen sähe z.B. so aus:

Code:
SELECT *
FROM tabelle1, tabelle2
WHERE tabelle1.id = tabelle2.id

Weitere Beispiele und Möglichkeiten werden im Manual beschrieben:
MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7 SELECT
 
Auch hier der Tipp, dich mit Datenbanktheorie zu befassen. Das wird sonst wahrscheinlich nichts. Du solltest etwa wissen, was eine Relation ist.

Ein Tutorial gibt es zum Beispiel hier:

- MySQL - Einleitung (Ich habe es nie gelesen.)
 
Werbung:
Erst mal vielen Dank... Jetzt weiß ich schonmal, nach was ich suchen muss ;-)
@mermshaus: Dein Link erscheint mir für's Erste verständlicher
 
Ich habe mal etwas geggogelt, getan und gemacht...

Der einfachste JOIN ist der sogenannte "EQUI-JOIN". Ein Beispiel :

SELECT A.EineSpalte, B.EineAndereSpalte FROM Tabelle1 AS A, Tabelle2 AS B WHERE A.EinWert = B.EinAndererWert;

SELECT titel, interpret, name FROM cdsammlung c, ausgeliehen a WHERE c.id = a.cd_id

SELECT titel, interpret, name FROM cdsammlung c JOIN ausgeliehen a WHERE c.id = a.cd_id

Komme aber leider dennoch nicht weiter :-(

$sql = "SELECT prod.products_id,
prod.products_model,
desc.products_name,
FORMAT(prod.products_quantity, 0) AS products_quantity,
FORMAT(prod.products_price, 2) AS products_price
FROM xt_products prod, xt_product_description desc WHERE prod.products_id = desc.products_id
WHERE prod.products_quantity < 999";

/*
$sql = "SELECT products_id,
products_model,

FORMAT(products_quantity, 0) AS products_quantity,
FORMAT(products_price, 2) AS products_price
FROM xt_products
WHERE products_quantity < 999";
*/

Die "einfache" Abfrage funktioniert, mal vom fehlenden "Namen" abgesehen, wie gewünscht...
 
Werbung:
Komme aber leider dennoch nicht weiter :-(
und was sollen wir jetzt deiner Meinung nach tun?
Deine Abfrage scheint richtig zu sein (andernfalls würdest du ja auch einen Fehler angezeigt bekommen), aber ich vermute du möchtest einen LEFT JOIN machen. Das ist läßt sich anhand deiner "Problembeschreibung", aber nur raten.
 
und was sollen wir jetzt deiner Meinung nach tun?
Deine Abfrage scheint richtig zu sein (andernfalls würdest du ja auch einen Fehler angezeigt bekommen), aber ich vermute du möchtest einen LEFT JOIN machen. Das ist läßt sich anhand deiner "Problembeschreibung", aber nur raten.

Hätt' ja sein können, dass einer auf den ersten Blick groben Unfug entdeckt... ich bekomme leider nur "Anfrage nicht erfolgreich" angezeigt
 
Hätt' ja sein können, dass einer auf den ersten Blick groben Unfug entdeckt... ich bekomme leider nur "Anfrage nicht erfolgreich" angezeigt
Das wäre ein Hinweis gewesen, d.h. die Abfrage ist doch falsch. Jetzt musst du dir nur noch die Meldung anzeigen, dann Wissen wir was falsch ist.
 
Werbung:
Ich habe jetzt nochmal den ganzen Kram rausgelöscht und neu getippt...

PHP:
$sql = "SELECT p.products_id,
                   pd.products_id,
                   p.products_model,
                   pd.language_code,
                   pd.products_name,                                                  
                   FORMAT(p.products_quantity, 0) AS products_quantity,   
                   FORMAT(p.products_price, 2) AS products_price                      
                   FROM xt_products AS p, xt_products_description AS pd WHERE p.products_id = pd.products_id";

und siehe da, es funktioniert! D.h. meine Tabelle wird angezeigt...

Allerdings funktioniert nun die "Ausklammerung" der Artikel mit einem Bestand >998 nicht mehr :-(
Vorher klappte dies mit
PHP:
WHERE p.products_quantity < 999
unter der Tabellenzuweisung...

Desweiteren müssen noch alle Artikel mit "pd.language_code = EN" ausgeblendet bzw. nur die mit "pd.language_code = DE" ausgegeben werden... Dies bläht meine Tabelle nur unnötig auf!

Auf alle Fälle bin ich schonmal ein Stückchen weiter... Vielen Dank für dier Tipps und vor allem die Geduld!
 
FORMAT(p.products_quantity, 0) AS products_quantity WHERE products_quantity < 999

--> Anfrage nicht erfolgreich :-(
 
Werbung:
Was hat diese Segment mit deinem vorherigen Abfragen zu tun zu tun? Was heißt nicht erfolgreich?
$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

Mit dieser Zeile (in der Definierung $sql) sollten eigentlich die Nachkommastellen gestrichen und die Masterartikel (mit einem Bestand von 999) ausgeklammert werden...
 
Aber der Teil sieht komplett anders aus, wo ist der from Teil? wo ist die andere where bedingung?
 
Werbung:
Ich vermute, dass Problem liegt darin, dass die Syntax von SQL-Queries noch immer größtenteils geraten wird.

Das ist einfach auf Dauer kein gangbarer Weg.

Mehrere WHERE-Bedingungen kannst du mit AND verknüpfen.
 
Ich vermute, dass Problem liegt darin, dass die Syntax von SQL-Queries noch immer größtenteils geraten wird.

Das ist einfach auf Dauer kein gangbarer Weg.

Mehrere WHERE-Bedingungen kannst du mit AND verknüpfen.

Da magst Du duchaus recht haben! ;-)
Nun, und mit der AND Verknüpfung der bedingungen habe ich meine Tabelle, so wie ich es möchte...

Vielen Dank!
 
Zurück
Oben