Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 27.01.2003, 20:30   #1
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt

Frage zu JOIN


Hi FOlks

Habe wenig mit Joins herumprobiert
hier das Ergebnis

Soweit auch ganz nett
hier der Code:

PHP-Code:
<?
mysql_connect
("localhost","xxx","xxx");
mysql_select_db("xxx");
// Connection steht ...
?>
Artikelstamm:<br>
<?
$sql 
"SELECT items.item_id, items.item_name, kategorie.kat_id, kategorie.kat_name
FROM items, kategorie
WHERE items.kat_id = kategorie.kat_id LIMIT 0, 30 "
;
$erg mysql_query ($sql);
while (
$i mysql_fetch_array($erg)){
    echo 
$i[item_id]." - ".$i[item_name]." - ".$i[kat_name]."<br>";
}
?>
<br><br>
Bestellungen:<br><br>
<?
$sql 
"SELECT purcheses.purchase_id, purcheses.kaeufer_id, purcheses.date ,kaeufer.kaeufer_name, kaeufer.kaeufer_adresse, items.item_name
        FROM purcheses, kaeufer, items
        WHERE purcheses.kaeufer_id = kaeufer.kaeufer_id AND purcheses.item_id = items.item_id
        ORDER BY purcheses.purchase_id ASC"
;
$erg mysql_query ($sql);
while (
$i mysql_fetch_array($erg)){
        echo 
"Transaktionnummer: ".$i[purchase_id]."<br>";
        echo 
"Käufername: ".$i[kaeufer_name]."<br>";
        echo 
"Käuferadresse: ".$i[kaeufer_adresse]."<br>";
        echo 
"Kaufdatum: ".$i[date]."<br>";
        echo 
"bestellt: ".$i[item_name]."<br><br>";
}
?>
Wie ist das nun, im Spiel sind 3 tables, da darf kein Fieldname den gleichen Namen haben oder? weil ich ja über fetch_array die Felder direkt anspreche ($i[field])? Stimmt das? Wie kann ich das umgehen, weil wenn dann mal mehr Felder im Spiel sind könnte ich mir schwer tun mit immer verschiedenen Fieldnames ....
Hoffe ihr wisst was ich meine

Gruß Alex
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten


Alt 27.01.2003, 20:48   #2
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Hi Holunda,

das geht einfach indem du mit "AS" in der Query das Feld umbenennst:
PHP-Code:
SELECT items.item_id AS itemsidxyz.item_id AS xyzid,... 
Gruß, Jürgen
Jürgen ist offline   Mit Zitat antworten
Alt 27.01.2003, 21:17   #3
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
danke Jürgen

noch eine Frage:
kann ich eig beliebig viele AND's hinzufügen?
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 27.01.2003, 21:25   #4
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Ja, also wo die effektive Grenze liegt, weiß ich nicht, aber du kannst mehrere AND's kombinieren.
Jürgen ist offline   Mit Zitat antworten
Alt 27.01.2003, 21:28   #5
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
thx
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 28.01.2003, 18:57   #6
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
hmm irgendwie schnall ich das nicht welche JOIN Anweisung ich jetzt brauche. Hat jemand einen guten Link auf deutsch oder kann mir jemand das ganz kurz erläutern. LEFT INNER OUTER RIGHT FULL STRAIGHT
werde noch ganz duselig
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 28.01.2003, 19:06   #7
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Habs nur kurz überflogen, dürfte aber brauchbar sein:

Link
Jürgen ist offline   Mit Zitat antworten
Alt 28.01.2003, 19:43   #8
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
danke jürgen,
ich checks aber beim besten willen NICHT. Hab mir schon diverse andere Links angeschaut, aber nix will rein in mein Kopf

Könnte mir das vielleicht wer mal eintrichtern?
danke Alex
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 28.01.2003, 21:31   #9
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Ein Join ist eine Verknüfpung zwischen zwei Tabellen. Wenn du z. B. eine Tabelle mit Namen tbl_name und eine mit Telefonnummern tbl_tel hast, fragst du mit
PHP-Code:
SELECT nametelefonnummer FROM tbl_nametbl_tel WHERE tbl_name.id tbl_tel.id 
die Namen und die zugehörigen Telefonnummern ab. Dann werden hier aber nur Datensätze gefunden, die auch auf beiden Seiten, also in beiden Tabellen ein entsprechendes Gegenstück haben. Hat also ein Name keine Telefonnummer gespeichert, wird dieser nicht mit ausgegeben.

Im Grunde ist die erste Schreibweise schon ein JOIN, denn 2 Tabellen werden miteinander verknüpft.

Die selbe Abfrage könntest du auch so schreiben:
PHP-Code:
SELECT nametelefonnummmer FROM tbl_name JOIN tbl_tel WHERE tbl_name.id tbl_tel.id 
ebenfalls dasselbe wäre der Inner Join, bei dem beide Tabellen verglichen werden, und nur die Datensätze ausgegeben werden, bei denen auf beiden Seiten Übereinstimmungen gefunden werden. Da SQL dieses als default annimmt, ist es daher dasselbe wie die erste Abfrage ohne JOIN:
PHP-Code:
SELECT nametelefonnummmer FROM tbl_name INNER JOIN tbl_tel WHERE tbl_name.id tbl_tel.id 
Jetzt wollen wir alle Namen und die zugehörigen Telefonnummern ausgeben, auch wenn keine Nummer gespeichert ist:
PHP-Code:
SELECT nametelefonnummmer FROM tbl_name LEFT JOIN tbl_tel ON tbl_name.id tbl_tel.id 
Mit LEFT JOIN wird also zuerst die linke Tabelle ausgelesen und dann erst die entsprechenden Datensätze der rechten Tabelle dazugestellt. Es ändert sich nur folgendes: Anstatt WHERE muss ON verwendet werden, die Parameter dahinter werden gleich geschrieben.

LEFT OUTER JOIN ist nur eine andere Schreibweise für den LEFT JOIN, also in dem Fall dasselbe.

RIGHT JOIN ist naturgemäß das selbe, nur wird zuerst die rechte Tabelle ausgelesen und dann die Datensätze der linken Tabelle dazugestellt.

STRAIGHT JOIN ist eine mySQL Spezialität und liest zuerst die linke Tabelle und dann die rechte, es ergibt sich eine andere Sortierung als bei JOIN.

Soweit alles unklar?

Gruß, Jürgen
Jürgen ist offline   Mit Zitat antworten
Alt 04.02.2003, 13:37   #10
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
hmmm das heißt der RiGHT JOIn is eigentlich sinnlos weil ich ja die Tabellen auch verkehrt herum schreiben kann, oder sehe ich da was falsch?

Alex
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 04.02.2003, 14:23   #11
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Stimmt, es wird sogar empfohlen, nur LEFT JOIN zu benutzen, zwecks Datenbankunabhängigkeit.
Jürgen ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Frage zu JOIN Frage zu JOIN
« Wie springe ich zur nächste Seite? | Automatisch aus Listenfeld ausgewählt aber irendwie dann doch nicht »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:36 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67