mehrere datenbank abfragen

mckani

Erfahrenes Mitglied
Moin @all

hab wieder mal probleme :)
also ich will 3 Datenbanken abfragen
Hier ist die code
Code:
$sql = mysql_query("SELECT * FROM bs_produkt, bs_einstellung,bs_bestellung WHERE id = ".$_GET['id']) OR 
   die("<hr>Fehler bei SELECT : ".mysql_errno()."->".mysql_error()."<hr>"); 

$row = mysql_fetch_assoc($sql) OR 
   die("<hr>Fehler bei fetch_assoc : ".mysql_errno()."->".mysql_error()."<hr>"); 
{
so jezt bekomm ich hier aber dieses fehler:

Fehler bei SELECT : 1052->Column: 'id' in where clause is ambiguous

ich möchte die id von der datenbank tabelle bs_bestellung abfragen!
wie ist das möglich ?

Ich danke voraus..

Mfg
 
Übersetzung von ambiguous

MySQL weiß einfach nicht, aus welcher Tabelle es die id nehmen soll. Du kannst es mit tabelle.feld eindeutig kennzeichnen.

Ich persönlich bevorzuge die Syntax, in der der JOIN ausgeschrieben wird:
Code:
SELECT *
FROM tabelle1
JOIN tabelle2
  ON tabelle1.feld=tabelle2.feld
WHERE tabelle1.feld='irgendwas'
Du kannst die Tabellen aber auch verknüpfen, wie Du es angefangen hast und die ON-Bedingung ins WHERE übernehmen:
Code:
SELECT *
FROM tabelle1, tabelle2
WHERE tabelle1.feld=tabelle2.feld
  AND tabelle1.feld='irgendwas'
Gruß hpvw

EDIT: Ich vermute, dass spätestens bei drei verknüpften Tabellen die explizite Syntax mit JOIN schneller ist. Die Query-Optimierung müßte schon sehr intelligent sein, wenn das nicht so wäre.
 
Zuletzt bearbeitet:
also ich will 3 Datenbanken abfragen
Noch eine kleine Anmerkung am Rande:

Du willst Daten aus drei Tabellen abfragen.

Stell dir in diesem Zusammenhang eine Datenbank wie einen Ordner vor, aus dem du auf drei Dateien (Tabellen) zugreifst.

Gruß
vop
 
grr
ich hab grad gecheckt. ich muss auch nur 2 datenbanken abfragen. das 3´te steht da umsonst also bs_einstellung

naja trozdem komm ich da net durch :(

Also ist bei mir das folgendes
Code:
SELECT *
FROM bs_produkt
JOIN bs_bestellung
  ON bs_produkt.id=bs_bestellung.id
WHERE bs_bestellung.id='$id'
Wäre das so bei mir richtig ?! :/

wenn ja und ich habe es auch so gemacht ^^ kommt dieses fehler

Fehler bei fetch_assoc : 0->
:(
 
Syntaktisch ist das korrekt.
Ich bezweifel jedoch, dass es inhaltlich das ist, was Du haben willst.
Du hast die Tabellen doch über einen Primärschlüssel bzw. einen Fremschlüssel in der anderen Tabelle verknüpft. Vielleicht steht ja in der Tabelle bs_bestellung eine Produkt-ID? Die solltest Du in der ON--Bedingung auch angeben.

Ob der Primärschlüssel der Bestellung dem Primärschlüssel des Produkts entspricht, spielt bei dem Datenbankdesign, was ich ich im Kopf habe keine Rolle.

Gruß hpvw
 
Hallo!

Du:
PHP:
WHERE id = ".$_GET['id'])
Ich:
PHP:
WHERE id='".$_GET['id']."'")
Fällt dir was auf?
Bei dir endet der Query schon bei id="

Gruss Dr Dau
 
du schon wieder...
ich werd beobachtet :P
*g*

hast nen alarm system aufgebaut ?:-):-)
dan schick mal code
ich denk so ca. müsste es aussehen
Code:
if (!mckani($_POST['postontutorials.de'])
{
echo 'mc-kani hat nix gepostet';
}else{
echo 'Alarm Mc-Kani Hat gepostet';
}

^^
na scherz bei seite und zurück zum thema.!
Hab hier jezt folgendes stehen
Code:
$sql = mysql_query("SELECT *
FROM bs_produkt
JOIN bs_bestellung
  ON bs_produkt.id=bs_bestellung.id
WHERE bs_bestellung.id='".$_GET['id']."'") OR
Und ich bekomm trozdem das fehler
Fehler bei fetch_assoc : 0->

was ich aber hier nicht so ganz verstehe ist warum bs_produkt.id dort steht ? ich will die doch garnicht ausgelesen bekommen sondern nur bs_bestellung.id ?

mfg
 
reptiler hat gesagt.:
:offtopic:
Da musst Du Dich dran gewoehnen. Der hpvw lauert einem schonmal ganz gern auf.
Mir hat er auch eine Weile jeden Beitrag kommentiert. ;)
ich meinte dr. dau ^^ :P
aber naja der hpvw gehört auch zu der spion kategorie :D
 
Zurück