php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.05.2006, 13:30  
Benutzer
 
Registriert seit: 26.02.2005
Beiträge: 58
Madden
Standard SQL ABfrage über mehrere Tabellen

Hallo!

Ich wollte mal fragen ob mir hier jemand erklären kann, wie man eine Mysql Abfrage über mehrere tabellen macht. Ich weiß, dass es mit "JOIN" geht, nur versteh ich leider nicht ganz wie.


Was ich machen will ist folgendes:

aus der tabelle termine alle termine auslesen + ausgeben. (tabelle1)

auf die termine kann man anschließend drauf klicken + erhält so informationen über den user, der den termin angelegt hat (Tabelle2)



Die Informationen werden auf der selben Seite in einem Layer angezeigt, das ganze soll also ohne Seitenwechsel funktionieren.


Das ist eigentlich nichts schweres, aber ich weiß leider nicht wie das geht, da ich das bisher noch nie gebraucht hatte bzw. immer anders gelöst hatte.

Liebe Grüße
__________________
freesms, free hosting uvm. 4 free:

>> www.msxstudios.de
Madden ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.05.2006, 17:33  
Erfahrener Benutzer
 
Registriert seit: 25.08.2005
Beiträge: 250
PHP-Kenntnisse:
Fortgeschritten
FireFIghter
Standard

dann machst du nicht "SELECT * FROM TABELLE" sondern "SELECT TABELLE.spaltenname"
FireFIghter ist offline   Mit Zitat antworten
Alt 07.05.2006, 20:34  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

und was schreibe ich hier:
PHP-Code:
SELECT COUNT(id) AS items FROM equipment 
ich habs schon mit
SELECT COUNT(equipment.id) AS items
versucht, aber da schreibt er
#1109 - Unknown table 'equipment' in field list
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 07.05.2006, 23:54  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von FireFIghter
dann machst du nicht "SELECT * FROM TABELLE" sondern "SELECT TABELLE.spaltenname"
Prima Lösung ^^


SELECT termine.*, user.* FROM termine LEFT JOIN user ON termine.author_id = user.id WHERE <bedingung>

Das geht aber nur bei einer 1:1 Beziehung gut, also wenn ein Termin auch nur genau einen Autor hat, sonst kommt krummes Zeug raus bzw. zuviele Treffer.
Zergling-new ist offline   Mit Zitat antworten
Alt 08.05.2006, 14:19  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

Das heißt, wenn ich's jetzt richtig verstanden hab:
SELECT [table1].[row1], [table2].[row2] FROM [table1] LEFT JOIN [table2] ON [table1].[row1] = [table2].[row2] WHERE <bedingung für [table1]>

warum muss nach LEFT JOIN [table1] stehen? was wäre wenn man anstatt von user da terimine rein schreibt?

hier noch mal mein problem: ich hab 2 sql-abfragen:
PHP-Code:
SELECT COUNT(id) AS items FROM equipment 
SELECT COUNT
(id) AS waffen FROM waffen 
Daraus wollte ich jetzt folgendes machen:
PHP-Code:
SELECT COUNT(equipment.id) AS itemsCOUNT(waffen.id) AS waffen 
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 08.05.2006, 16:47  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

ON bei JOIN ist im Prinzip nichts anderes als das WHERE vom SELECT. Also die Bedingung.

Du willst ja Datensätze einer 2. Tabelle zum Ergebnis der 1. Tabelle joinen (hinzufügen). Nun musst du eben mitteilen welche Datensätze und genau das machst du mit ON:

Die Datensätze aus Tabelle 2 hinzufügen, deren Wert von [rowX] gleich dem Wert von [rowY] aus Tabelle 1 ist.

Bleistift:
Code:
user
id | username | email
1  | Peter    | peter@sen.de
2  | Ulf      | ulf@strombe.rg

settings
user_id | language | edited
1       | deDE     | 2006-05-07
2       | enUS     | 2006-04-27

SELECT user.*, settings.* FROM user LEFT JOIN settings ON user.id = settings.user_id WHERE user.username = 'Peter'

result:
id | username | email        | user_id | language | edited
1  | Peter    | peter@sen.de | 1       | deDE     | 2006-05-07
Zergling-new ist offline   Mit Zitat antworten
Alt 08.05.2006, 17:33  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

hmm, ich glaub das hab ich verstanden. aber wie mach ich das in meinem fall?
ich will einfach nur die anzahl der datensätze von 5 tabellen auslesen (und das ganze in einem wisch)

[offtopic] www.german-bash.org ist echt geil bin durch dich drauf gekommen
__________________
http://www.martin-thoma.de
moose ist offline   Mit Zitat antworten
Alt 08.05.2006, 19:05  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich würde es mit
PHP-Code:
SELECT COUNT(*) FROM table1 UNION SELECT COUNT(*) FROM table2 UNION SELECT COUNT(*) FROM table3 .. 
machen. Als Ergebnis bekommst du in diesem Fall 3 Zeilen mit jeweils der Anzahl der Zeilen pro Tabelle.

Aber es gibt bestimmt eleganteres..

Edit: Jep, german-bash.org ist echt fein, bash.org ist teilweise aber noch besser
Zergling-new ist offline   Mit Zitat antworten
Alt 09.05.2006, 10:49  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wichtig ist in dem Zusammenhang wohl folgendes: JOIN arbeitet immer auf Datensatzebene. Du verbindest also einen Datensatz mit einem zweiten (aus einer anderen Tabelle) und beide werden dann zu einem neuen Datensatz. Willst du die Tabellen-Einträge zählen, ist das der falsche Ansatz...

Und noch ein Tip: Mathe 3. Schuljahr (oder noch früher, ist bei mir zu lange her). Mengenlehre. JOIN ist genau das vom Prinzip. INNER JOIN ist die Schnittmenge, FULL OUTER JOIN die Vereinigungsmenge usw.

Herr zergling, wenn schon denn:
SELECT COUNT(*) FROM table1 UNION ALL SELECT COUNT(*) FROM table2 UNION ALL SELECT COUNT(*) FROM table3 ..
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 09.05.2006, 11:56  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Stimmt, ham wir eigentlich gerade in Datenbanken gelernt
aber gleiche Datensätze kommen ja hoffentlich nicht vor
Zergling-new 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
abfrage auf gleiche Spalten aus zwei Tabellen maeck Datenbanken 13 08.07.2008 10:09
Abfrage mehrere Tabellen SteiniKeule Datenbanken 14 18.04.2008 19:57
abfrage über mehrere tabellen mit einer bedingung DarkThunder PHP Tipps 2007 6 15.04.2007 17:13
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
Abfrage mehrerer Tabellen per PHP (Code vereinfachen) PHP Tipps 2007 4 18.12.2005 12:34
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
Abfrage aller Tabellen über Schleife PHP Tipps 2005-2 7 22.10.2005 12:16
[Erledigt] MySQL Abfrage über mehrere Tabellen [Erledigt] Datenbanken 2 14.10.2005 13:37
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
Problem 2 - komplexere Abfrage aus drei Tabellen Datenbanken 0 15.07.2005 13:59
Abfrage aus zwei Tabellen Datenbanken 1 07.06.2005 13:47
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08
Abfrage zweier Tabellen funzt net richtig Datenbanken 1 17.09.2004 12:53
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql schnittmenge zweier tabellen, php sql abfrage mehrere tabellen, http://www.php.de/datenbanken/39734-sql-abfrage-ueber-mehrere-tabellen.html, sql mehrere tabellen abfragen wert in einer tabelle aber nicht in der anderen, sql abfrage aus 3 tabellen, join mengenlehre, datenbank sql abfrage über mehrere tabellen, sql abfrage über zwei tabellen, sql abfragen über mehrere tabellen, sql abfrage mehrere tabellen, php mysql select abfrage doppelte einträge join aus 3 tabellen, sql schnittmenge drei tabellen, sql abfrage mit mehreren abfragen, php sql select 2 tabellen, sql from mehrere tabellen, sql über mehrere tabellen, sql server schnittmenge mehrerer tabellen, sql abfrage 2 tabellen, sql schnittmenge zählen, sql abfrage über 2 tabellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 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.