Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

MySQL Abfrage





Frage

Hallo, hab ein (für mich zumindest) verzwicktes Problem: Habe per post aus einem Formular eine Bestellnr übergeben, mit der ich Daten aus einer Bestellung automatisch auf ne Rechnung setzen lasse. Da sollen aber auch noch Kundendaten drauf, z. B. die Firmenanschrift. Kundendaten sind aber in einer anderen MySQL Tabelle gespeichert. $strSQL = "SELECT DISTINCTROW firma FROM orders WHERE order_id=".$rechnung; $Erg=mysql_query($strSQL); while ($Zeile=mysql_fetch_array($Erg)) { echo "<option value=". "\"$Zeile[0]\">$Zeile[0]</option>"; } damit hol ich den Firmennamen für order_id (Variable $rechnung) aus der Tabelle orders. Insgesamt soll aber passieren: Nimm $rechnung und suche in der Tabelle orders nach dem entsprechenden Firmennamen (klappt schon, s.o.) und nimm dann diesen Firmennamen, um dann aus der Tabelle customers die passende Adresse zu suchen und auszugeben. Kann mir da wer helfen, verzweifle langsam darüber schon... :-/

Antwort 1 von disco

moin

müsste ungefähr so hinhauen.

$strSQL ="SELECT customers.adresse FROM customers,orders WHERE customers.firma = orders.firma AND oders.oder_id=´$rechnung´";

sag, wenns geklappt hat.

g,
disco

Antwort 2 von Lena3

Hee disco,

danke für die schnelle Antwort. Hat nur leider nicht geklappt. Fehlerausgabe sagt immer noch, dass der Zielwert nicht gefunden wurde. Hab aber schon 3x gecheckt, dass die Tabellen die passenden Daten dafür enthalten.

Hattest auch beim letzten "orders" ein r vergessen, aber auch mit klappts leider nicht. Hmmpf. Kann man vielleicht den SELECT Befehl nicht so beliebig erweitern?

Oder gibts vielleicht nen Umweg, dass man irgendwie die erste Abfrage (firma) in der PHP Variable speichert, z. B. $firma, die man dann hinterher für die Adresse verwenden kann, also

$strSQL = "SELECT DISTINCTROW adresse FROM customers WHERE firma=".$firma;

???

Antwort 3 von disco

der befehl an sich ist ja in ordnung. hab den ja vorher an einem beispiel bei mir ausprobiert. musst halt gucken, dass der an die spalten und tabellennamen deiner datenbank angepasst wird.

Antwort 4 von Lena3

Hmm, schon wieder 1 1/2 Stunden probieren hinter mir. Also, ich poste mal den Code:
<?PHP
mysql_select_db ($DB,$Conn);
$strSQL = "SELECT DISTINCTROW firma FROM orders WHERE order_id=".$rechnung;
$Erg=mysql_query($strSQL);
while ($Zeile=mysql_fetch_array($Erg))
{
echo "<option value=".
"\"$Zeile[0]\">$Zeile[0]</option>";
}
echo "<BR>";
$strSQL ="SELECT customers.adresse FROM customers WHERE customers.firma = orders.firma AND orders.order_id=".$rechnung;
$Erg=mysql_query($strSQL);
while ($Zeile=mysql_fetch_array($Erg))
{
echo "<option value=\"$Zeile[0]\">$Zeile[0]</option>";
}
mysql_free_result($Erg);
?>

Die erste Abfrage, die nicht tabellenübergreifend ist, funzt.
In Tabelle customers befinden sich u. a. eine Spalte firma und eine Spalte adresse und in Tabelle orders befindet sich eine Spalte order_id und eine Spalte firma. Bei der zweiten Abfrage kommt:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Da muss ich doch irgendwo nen Fehler drin haben. Wäre echt superlieb, wenn du mir weiterhelfen könntest...

Antwort 5 von rabies

Tag, Morgen... wie auch immer.

Wie wär´s mit ner INNER JOIN Anweisung?

in dem Falle wie folgt:

$strSQL="SELECT customers.adresse FROM customers INNER JOIN orders ON customers.firma = orders.firma WHERE orders.order_id=".$rechnung;

Die Abfrage würfelt mir dann jeweils eine Adresse zurück - und die Abhängigkeit passte auch - so weit ich das jetzt mal testen konnte. Das mit dem customers.firma = orders.firma hab´sch auch versucht. Da meinte die gute MySQL Konsole zu mir, dass es die Tabelle "orders.firma" nicht kennt. Da denkt man sich auch nur: aha.


Hoffe, ich konnte helfen.
Greets,
Sven.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: