mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 14:09 Benutzername: Passwort: Auto-Login

Thema: SQL mal wieder vom 20.12.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> SQL mal wieder
Seite: 1, 2  Weiter
Autor Nachricht
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Do 20.12.2007 15:13
Titel

SQL mal wieder

Antworten mit Zitat Zum Seitenanfang

Moin. Lächel

Nehmen wir mal Folgendes (zur Vereinfachung) an:
Code:

Tabelle User mit Spalte id
Tabelle Foto mit Spalte iduser (also User.id) (1:n)
Tabelle Text mit Spalte id, iduser (also User.id) (1:n)
Tabelle Sign mit Spalte idtext (also Text.id) (1:n)

Jetzt will ich herausfinden, wieviele Fotos und wieviele Texte zu einem User gespeichert wurden und auch
noch gleich, wie viele Signatures an den jeweiligen Texten dranhängen.
Geht das in einem einzigen Statement?



Code:

SELECT u.id, f.iduser, t.iduser, s.idtext FROM user AS u
LEFT JOIN foto AS f ON u.id = f.iduser
LEFT JOIN text AS t ON u.id = t.iduser
LEFT JOIN sign AS s ON t.id = s.idtext
WHERE u.id = 1

So könnte ich das was zurückgegeben wird natürlich in einer Schleife verarbeiten.
Ist aber umständlich. Geht das eleganter mit count() und GROUP BY ?

Irgendwie steh ich gerade auf dem Schlauch. Menno! Bin auf keine funktionierende Lösung gekommen.[/code]
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Do 20.12.2007 15:32
Titel

Antworten mit Zitat Zum Seitenanfang

zeig mal auch bitte die restlichen spalten deiner tabelle... will mal sehen, was man counten könnte *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Do 20.12.2007 15:38
Titel

Antworten mit Zitat Zum Seitenanfang

häh? Au weia!
Das habbich jetzt nich kapiert.
Du kannst doch jede beliebige Spalte counten ... * Ööhm... ja? *
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Do 20.12.2007 16:13
Titel

Antworten mit Zitat Zum Seitenanfang

GUCK MICH NICHT SO AN!!!!!!! Grins

ich wollte ein wenig mehr zusammenhang haben... konkret wollte ich wissen, ob du schlauerweise auch bei der sign die direkte verbindung zur user-id hast, oder ob du immer einen umweg über die text-tabelle gehen musst... was ich ungünstig fänd... *bäh*

edit: kleines ups am rande hatte "und auch noch gleich, wie viele Signatures an den jeweiligen Texten dranhängen. " überlesen... kannst mich also doch so angucken... aber nur KURZ!!!! Grins


Zuletzt bearbeitet von pixelpapst303 am Do 20.12.2007 16:15, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Do 20.12.2007 16:48
Titel

Antworten mit Zitat Zum Seitenanfang

Okay. Ooops

Nachdem Du ja jetzt den Durchblick hast,
hast Du auch ne Lösung? *zwinker*
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Do 20.12.2007 17:21
Titel

Antworten mit Zitat Zum Seitenanfang

leider nicht, ohne ein wenig zu testen.... und adfür gerade ein wenig zu wenig zeit...

habs noch nie probiert, aber nachdem ich nachgeschaut habe, ist ein einfaches count() in nem join statement scheinbar nicht möglich, oder?

sonst wäre mein rein theoretischer ansatz sowas gewesen (kann nu auch völliger bullshit sein)
Code:

SELECT count(u.id) as userz, count(f.iduser) as fotoz, count(t.iduser) as textz FROM user AS u, foto as f, text as t
LEFT JOIN count(sign) AS s ON t.id = s.idtext
WHERE u.id = 1 AND f.iduser = 1 AND t.iduser = 1


* Keine Ahnung... *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 20.12.2007 20:14
Titel

Antworten mit Zitat Zum Seitenanfang

pixelpapst303 hat geschrieben:
st ein einfaches count() in nem join statement scheinbar nicht möglich, oder?


Zitat:
SELECT
count(t1.id),
t1.spalte,
t2.id,
t2.spalte
FROM
t1
LEFT JOIN
t2
ON
t1.id = t2.id
WHERE
Bedingung = erfüllt
GROUP BY
t1.id


In Verbindung mit GROUP BY
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Fr 21.12.2007 09:42
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
SELECT count(t1.id), t1.spalte, t2.id, t2.spalte
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
WHERE Bedingung = erfüllt
GROUP BY
t1.id


Jaa, nee * Nee, nee, nee *

Wäre schön, wenns so einfach wäre.
Aber wie gesagt, ich hab bei mir ja ne zweistufige Referenz drin.

Code:
Tabelle User mit Spalte id
Tabelle Foto mit Spalte iduser (also User.id) (1:n)
Tabelle Text mit Spalte id, iduser (also User.id) (1:n)
Tabelle Sign mit Spalte idtext (also Text.id) (1:n)


Hier sieht man:
Code:

Sign.idtext -> Text.id und Text.iduser -> User.id

Und sowohl im ersten wie im zweiten Fall hat man einen 1:n (eigentlich n:1, oder?) Fall.
Wenn ich da auf User.id count() und group by mach, dann kommt da nix ordentliches bei raus.

Würde ich so wie von pixelpapst vorgeschlagen alle entsprechenden Spalten in ein count() setzen wollen,
dann müsste ich auch für jede Spalte ein group by machen. Und das ergibt dann wieder totalen Käse.

Die einzige Möglichkeit wäre wohl so was:

Code:

SELECT u.id,
  (SELECT count(f.iduser) FROM foto AS f WHERE iduser=u.id),
  (SELECT count(t.iduser) FROM text AS t. WHERE iduser=u.id)
  (SELECT count(s.idtext) FROM user AS u WHERE idtext=t.id)
WHERE u.id = 1


Das scheint tatsächlich brauchbare Ergebnisse zu liefern. In die Richtung werde ich mal ausführlicher testen.

Danke für eure Bemühungen! *Thumbs up!*
  View user's profile Private Nachricht senden
 
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.