php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2004, 13:03  
Gast
 
Beiträge: n/a
Standard [Erledigt] Problem mit JOIN

Ich habs noch nie so richtig verwendet aber nun will ich folgendes machen nur es klappt nicht:

Code:
Tabelle "user":
+==+=============+
+ID+ NAME        +
+==+=============+
+1 + John Doe    +
+2 + Test User   +
+==+=============+

Tabelle "texte":
+==+====+===============================+
+ID+USER+ TEXT                          +
+==+====+===============================+
+1 +  1 + Hallo du da!                  +
+2 +  1 + Wie geht es dir?              +
+3 +  2 + Mir gehts echt super.         +
+4 +  1 + Na das freut mich aber.       +
+==+====+===============================+
Nun möchte ich folgende 2 Befehele miteinander verbinden dass ich es direkt in ein Array bekomme. Sonst muss ich für jeden User nochmal extra eine Abfrage starten:

Code:
SELECT `id`, `name` FROM `user` LIMIT 10;

SELECT SUM(CHAR_LENGTH(`text`)) FROM `texte` WHERE `user` = 1;
SELECT SUM(CHAR_LENGTH(`text`)) FROM `texte` WHERE `user` = 2;
...
Habs schon versucht aber ich bekomm immer den total Müll raus :cry:

Danke für eure Hilfe!
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.08.2004, 13:16  
Gast
 
Beiträge: n/a
Standard

was willst du mit
Code:
SELECT SUM(CHAR_LENGTH(`text`)) FROM `texte` WHERE `user` = 1;
genau mache?
so zählst du die anzahl buchstaben der titel.. willst du das?

wenn du die anzahl bücher eines autor willst, musst du

Code:
select sum(text) from texte where user= 1
machen..



das join machst du folgender massen..

Code:
select u.id, u.name, t.id, t.text from user u
left outer join texte t
on u.id = t.user
habs nicht getestet aber sollte klappen..
  Mit Zitat antworten
Alt 27.08.2004, 13:21  
Gast
 
Beiträge: n/a
Standard

Ich werde das mal testen aber das kannst du eigentlich eher mit einem Forum vergleichen (hab die Tabellenstruktur hier vereinfacht). Also ich möchte zählen wieviele Zeichen ein User schon geschrieben hat. Das funktioniert auch (also der Befehl einzeln)

Ich brauch do wohl irgendwie GROUP BY!?
  Mit Zitat antworten
Alt 27.08.2004, 13:30  
Gast
 
Beiträge: n/a
Standard

ah ok..

jo.. wenn du aggregatsfunktionen brauchst, musst du soweit ich weiss der rest group by machen, bin aber nicht sicher..

so etwa..

Code:
select u.id, u.name, t.id, sum(t.text) from user u 
left outer join texte t 
on u.id = t.user
group by u.id, u.name, t.id
bin aber nicht sicher...
  Mit Zitat antworten
Alt 27.08.2004, 13:55  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Von der Idee her ok, geht aber etwas einfacher:
Code:
SELECT u.name, SUM(CHAR_LENGTH(t.text)) 
    FROM user u
    LEFT JOIN texte t ON u.id = t.user
    GROUP BY u.name
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 27.08.2004, 14:04  
Gast
 
Beiträge: n/a
Standard

Ich hab was hinbekommen was funktioniert. So zusammengebastelt aus allem :?

Es scheint zu klappen aber villeicht liegt es auch am Beispiel dass es grade bei dem zufällig klappt!

Code:
SELECT u.id, u.name, CHAR_LENGTH( t.text )
FROM user u
LEFT JOIN texte t ON u.id = t.user
GROUP BY u.name
ORDER BY u.id LIMIT 0 , 30
Danke an alle!

[edit]
Das SUM() braucht man ja nicht mehr weil es ja schon gruppiert ist.
  Mit Zitat antworten
Alt 27.08.2004, 15:05  
Gast
 
Beiträge: n/a
Standard

ich würd nicht darauf gehen..
aber ich glaub ist eher zufall, dass es dir die werte zusammenzählt..
ich würde ein sum() benutzen..

hier ein auszug aus der mysqldoku..
Zitat:
The table's contents can be summarized per year with a simple GROUP BY like this:

mysql> SELECT year, SUM(profit) FROM sales GROUP BY year
http://dev.mysql.com/doc/mysql/en/GR...Modifiers.html
  Mit Zitat antworten
Alt 27.08.2004, 16:00  
Gast
 
Beiträge: n/a
Standard

Ok ich habs noch rein gemacht schaden kann es nicht :)
  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
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
[gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! stefanjann Datenbanken 10 06.02.2008 11:49
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Problem bei JOIN MilanX Datenbanken 3 03.05.2006 16:36
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23
Select Problem Datenbanken 17 16.01.2006 21:54
[Erledigt] Abfrageproblem mit Inner Join Datenbanken 15 29.11.2005 18:17
[Erledigt] LEFT JOIN Query Bildung Datenbanken 6 04.11.2005 15:24
sql-Abfrage inner join - unerklärliches Problem havok Datenbanken 6 17.10.2005 14:32
[Erledigt] Problem mit Backslash Patrick Schwarz PHP Tipps 2005-2 5 26.07.2005 09:54
Join Problem Simon9990 PHP Tipps 2005-2 1 21.07.2005 22:15
Problem mit Where und Join Datenbanken 5 06.07.2005 18:05
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34


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