php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.03.2009, 23:37  
Neuer Benutzer
 
Registriert seit: 20.03.2007
Beiträge: 21
PHP-Kenntnisse:
Fortgeschritten
BlackPanther
Standard [Erledigt] Join über 3 Tabellen

Hallo (nach sehr langer Zeit),

ich hoffe, dass ihr mir bei meiner SQL-Abfrage helfen könnt.

Ich habe 3 Tabellen: banner, banner_view und banner_click.
Banner: id, userID
Banner_view: bannerID
Banner_click: bannerID

Genaueres seht ihr in der Anlage.

Nun möchte ich die Banner einer bestimmten userID auflisten und jeweils deren Click und Views (also Einträge der Tabellen Banner_Click und Banner_click).

Leider summiert mir meine Abfrage die Ergebnisse falsch.
Könnt ihr mir helfen? Geht dies so überhaupt; habt ihr eine Idee, wie ich das besser organisieren kann?

Bisherige Abfrage:

Code:
SELECT SUM(banner_view.bannerID) AS views, SUM(banner_click.bannerID) AS clicks
FROM banner
LEFT JOIN banner_view ON banner_view.bannerID = banner.id
LEFT JOIN banner_click ON banner_click.bannerID = banner.id
WHERE banner.userID = 1
GROUP BY banner.id
ORDER BY banner.end ASC
Wäre klasse, wenn ihr mir helfen könntet.
Miniaturansicht angehängter Grafiken
erledigt-join-ueber-3-tabellen-tbl.jpg  
BlackPanther ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.03.2009, 00:57  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

So kann das auch nicht funktionieren.

1. SUM() addiert die einzelnen Werte in den Spalten auf ... hast du also die bannerID 5 und davon dann z.B. 3 Einträge in clicks ... dann würde bei SUM() eben 15 raus kommen, du möchtest aber wohl 3 bekommen.

2. Bei den LEFT JOINS erstellst du die Kreuzprodukte aller Einträge ... hast du also die in banner den Eintrag A und die zugehörigen clicks (B,C) und views (D,E) dann ergeben sich folgende Ergebnisse:
A - BD
A - BE
A - CD
A - CE

Also auch nicht was du möchtest.

Besser wäre hier ein Subselect der die Anzahl ausrechnet:

Code:
SELECT
    SUM(SELECT COUNT(*) FROM banner_view WHERE banner_view.bannerID = banner.id) as views,
    SUM(SELECT COUNT(*) FROM banner_clicks WHERE banner_clicks.bannerID = banner.id) as clicks,
FROM
    banner
WHERE
    banner.userID = 1
GROUP BY 
    banner.userID
ORDER BY
    banner.end ASC
So oder so ähnlich sollte das aussehen.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 11.03.2009, 19:56  
Neuer Benutzer
 
Registriert seit: 20.03.2007
Beiträge: 21
PHP-Kenntnisse:
Fortgeschritten
BlackPanther
Standard

Vielen Dank für die Hilfe...

Habe es nun folgendermaßen umgesetzt:

Code:
SELECT
      alt,
      active,
      position,
      end,
      (SELECT COUNT(*) FROM banner_view WHERE banner_view.bannerID = banner.id) AS views,
      (SELECT COUNT(*) FROM banner_click WHERE banner_click.bannerID = banner.id) AS clicks
FROM
      banner
WHERE
      banner.userID = $id
GROUP BY
      banner.id
ORDER BY
      banner.end,
      banner.active ASC
BlackPanther 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 über drei und mehr Tabellen querfisch Datenbanken 3 27.03.2007 21:12
SELECT über zwei Tabellen KingCrunch Datenbanken 9 23.03.2007 04:01
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
SQL ABfrage über mehrere Tabellen Madden Datenbanken 17 09.05.2006 21:19
Select über 2 Tabellen MasterMind Datenbanken 11 08.04.2006 11:43
Select über mehrere tabellen Sclot Datenbanken 14 24.11.2005 16:56
[Erledigt] Join mit 3 Tabellen Datenbanken 21 16.05.2005 23:20
select über drei Tabellen Sonja PHP Tipps 2005 10 12.05.2005 14:27
INNER JOIN mit 4 tabellen ??? Dragon26mFR Datenbanken 5 01.05.2005 18:51
sql über 2 tabellen PHP Tipps 2005 2 25.04.2005 21:26
Join aus 3 Tabellen mit nur einer Verknüpfung? Datenbanken 7 24.09.2004 18:25
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
suche über 8 tabellen PHP Tipps 2004 3 03.09.2004 12:48
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select join 3 tabellen sum, join über 3 tabellen, sql select über drei tabellen, 3 tabellen, sql join sum, 3 tabellen left join php, select join 3 tabellen, tabellen bannerwerbungen, join mit 3 tabellen und sum, left join sum 3 tables, erledigt join mit 3 tabellen, join 3 tabellen, sum join 3 tabellen sql, select sum \3 tabellen\, 3 tabellen joinen, sql join sum und count auf drei tabellen, habe drei tabellen, tabellen join mit drei tabellen, select über 3 tabellen php

Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 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