php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2004, 12:38  
Erfahrener Benutzer
 
Registriert seit: 25.01.2004
Beiträge: 239
bicpi
Standard Wie lautet der richtige JOIN?

Ich habe zwei Tabellen:
Eine mit Namen und weiteren atomaren Personenangeben. Eine weitere Tabelle soll ZB Namen der Kinder der betreffenden Person aufnehmen. Angenommen ich nun eine Person mit 2 Kindern, ist also ein Eintrag in Tabelle1 und 2 in Tablle2, verknüpft durch eine ID.
Wie muss nun der Join lauten, um die Daten in einer 'Row' abzufragen, weil in Tabelle2 muss er schliesslich 2 Infos rausholen...?

Danke für eure Hilfe
bicpi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.09.2004, 12:45  
Gast
 
Beiträge: n/a
Standard

Hi,

Code:
// Tabelle 1 "Eltern"
// Tabelle 2 "Kinder"

$sql = "SELECT 
     eltern.name,
     eltern.xxx,
     kinder.name,
     kinder.alter, 
     kinder.xxx
FROM `eltern`,`kinder`
WHERE 
    1 AND 
    eltern.id = kinder.id";
Hoffe das BEispiel hilft weiter.
  Mit Zitat antworten
Alt 19.09.2004, 14:48  
Gast
 
Beiträge: n/a
Standard

@r_michael

Die Lösung ist schon richtig, aber was macht das "1 AND" in der Abfrage?
  Mit Zitat antworten
Alt 19.09.2004, 16:19  
Erfahrener Benutzer
 
Registriert seit: 25.01.2004
Beiträge: 239
bicpi
Standard

So hab ichs mir auch gedacht, was mir jetzt nicht in den Kopf geht ist, wenn ich abfrage, bekomme ich EINE Zeile aus Tabelle 'Eltern' und zB ZWEI Zeilen aus 'Kinder' (bei 2 Kindern). Wenn ich nun ein mysql_fetch_assoc() mache, unter welchen Indizes spreche ich die Kinder an??
bicpi ist offline   Mit Zitat antworten
Alt 19.09.2004, 16:56  
Gast
 
Beiträge: n/a
Standard

Ich habe deinen Text jetzt bestimmt 5 x Durchgelesen und komme nicht wirklich dahinter, was du meinst.

Du hast doch die Namen der Spalten, die du abrufen kannst. Wenn sich natürlich Namen wiederholen, musst du sie mit einen "AS" umbenennen.

Wenn du z.B. 2x den Spaltennamen "Name" hast.

Code:
$sql = "SELECT Eltern.Name AS Elternname, Kinder.Name AS Kindername FROM ...";

while ($row = mysql_fefch_assoc($result)) {
    echo $row['Elternname'];
    echo $row['Kindername'];
}
  Mit Zitat antworten
Alt 19.09.2004, 17:06  
Erfahrener Benutzer
 
Registriert seit: 29.08.2003
Beiträge: 216
wurtzel
Standard

@bicpi
ich glaube was du vor hast ist so nicht ganz möglich
du kannst aber durch sortierung und join's erreichen das du ausgaben nach dem prinzip

elterndaten.*,kind.*
bekommst und prüfst so lange bis der nächste elterndatensatz beginnt
und kannst bei der ausgabe deinen datensatz zusammen bauen
wurtzel ist offline   Mit Zitat antworten
Alt 19.09.2004, 17:12  
Gast
 
Beiträge: n/a
Standard

Hallo,

Zitat:
Zitat von PrinzEisenherz
@r_michael

Die Lösung ist schon richtig, aber was macht das "1 AND" in der Abfrage?
Ja, da hast Du natürlich Recht, das gehört raus. Danke.
  Mit Zitat antworten
Alt 19.09.2004, 17:50  
Erfahrener Benutzer
 
Registriert seit: 25.01.2004
Beiträge: 239
bicpi
Standard

Also ich will zB folgendes ausgeben:

Eltern.Name | Eltern.Wohnort | Kinder | Kinder.Alter
Hans Müller | Berlin----------- | Mike--- | 10
---------------------------------- | Lisa--- | 12

Es ist doch korrekt, dass die Kinder in eigener Tabelle angelegt werden müssen, soweit ich das überall lesen kann, da ja sonst in der Eltern-Tabelle zB zwei Kinder in einem Feld stehen müssten...Also ich raffs einfach nicht..
bicpi ist offline   Mit Zitat antworten
Alt 19.09.2004, 18:03  
Gast
 
Beiträge: n/a
Standard

Du bekommst ja auch das zurück.

Eltern.Name | Eltern.Wohnort | Kinder | Kinder.Alter
Hans Müller | Berlin----------- | Mike--- | 10
Hans Müller | Berlin----------- | Lisa --- | 12
  Mit Zitat antworten
Alt 19.09.2004, 18:09  
Erfahrener Benutzer
 
Registriert seit: 25.01.2004
Beiträge: 239
bicpi
Standard

Jetzt kommen wir der Sache näher genau das kommt dann raus. Wenn ich nun viele Personen habe und eine Liste dieser ausegeben will per WHILE-Schleife, dann soll dort aber nicht bei jedem Kind der Eltern.Name nochmal auftauchen, also die Ausgabe soll so aussehen wie in meinem Beitrag oben. Geht da was?

Viele Grüße und Danke
bicpi ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrfach Join lazydog Datenbanken 2 08.05.2008 16:09
JOIN Problem pPanther Datenbanken 7 06.03.2008 17:26
[gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! stefanjann Datenbanken 10 06.02.2008 11:49
performance problem mit join leo Datenbanken 4 14.01.2008 22:31
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Komplexes Join Problem pPanther Datenbanken 7 03.08.2007 23:16
[solved] LEFT JOIN - #1066 - Not unique table/alias moose Datenbanken 6 12.12.2006 06:41
SQL-Frage zum JOIN micbur Datenbanken 2 16.11.2006 23:46
Join auf 2 verschiedene Felder Tommek Datenbanken 6 25.07.2006 20:39
JOIN problem 2 tabellen - zeile(tab1) zu spalte(tab2) Ministry Datenbanken 7 31.05.2006 10:31
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
INNER JOIN + Suchkriterien + Abfrage duerov PHP Tipps 2006 4 04.04.2006 12:47
inner join zeigt gleiche spalten nur 1x Datenbanken 3 22.02.2006 17:11
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23
[Erledigt] Join Datenbanken 15 09.03.2005 08:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.