cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
wichtigWir suchen PHP-Entwickler/innen (Freelancer oder Vollzeit)
Forum
Aktuellste Beiträge
Forenregeln

Community
BB-Codes
Tags
Chat
Suche (Web)
Wer ist online?
Top-User

Basar


Statistik
Mitglieder gesamt: 69379
Mitglieder online: 0
Gäste online: 0
mehr...

Anzeige
Forum » Forum: Website & Webprogrammierung » Thread: [gelöst] MySQL: Tabellen verbinden

Thread: [gelöst] MySQL: Tabellen verbinden

Tags: MySQL

26.10.2010 17:44 Uhr

 

Status: offline
Hi.

Ich habe eine Tabelle, in der bestimmte Inhalte, versehen mit einer ID gespeichert sind.
Eine andere Tabelle enthält Tag´s und Kategorien, denen ebenfalls jeweils eine ID zugewiesen wird.
In einer dritten Tabelle können nun Verbindungen zwischen den Tags und den Inhalten hergestellt werden. In dieser Tabelle stehen ausschließlich die content_id sowie die tag_id.

Jetzt würde ich gerne alle Tags/Kategorien ausgeben und dazu ausgeben, wie viele Inhalte damit verknüpft sind.

Das Ausgeben der Tags stellt natürlich kein Problem dar, aber wie gebe ich die Anzahl der zugehörigen Inhalte aus ohne für jeden Tag eine erneute Abfrage zu starten?

Um Tabellen zu verbinden gibt es ja verschiedenste Möglichkeiten (JOIN und so weiter), aber ich habe bisher nichts passendes gefunden. Problematisch ist, dass nicht zwei eindeutige Spalten verbunden werden, sondern dass einer Spalte mehreren Spalten auf der anderen Seite gegenüber stehen.

Vielen Dank an alle die sich mit der Frage auseinandersetzen  :wink:  .

MfG, Alex.
2 mal bearbeitet
___________________________
:)
26.10.2010 18:06 Uhr

 

Status: offline
Könntest du bitte mal die Datenstruktur posten?

Am besten als Tabelle, aber eine SQL Datei geht zur Not auch  :wink: 
___________________________
MFG Jan
"funzt nicht" ist keine gültige Fehlerbeschreibung!*haarerauf*
http://www.sysprofile.de/id30821
26.10.2010 18:32 Uhr

 

Gelöscht #671
Programmierer
Status: offline
Klingt für mich sehr nach einer Zusammenarbeit aus COUNT(), JOIN und GROUP BY.

Die Datenstruktur ist so (jede Zeile eine Tabelle):
IDcontent
IDtag_cat
content_idtag_cat_id


Muss jetzt aber zum essen. Den genauen SQL-Query überleg ich mir nachher.

Edit (19:53)

Hat ja schon jemand den Query gepostet, optimal. Ich hatte noch andere Dinge zu erledigen.
1 mal bearbeitet
26.10.2010 19:20 Uhr

 

Status: offline
Hätte ich auch gleich machen können  :lol:  .

Ein paar irrelevante Dinge lass ich mal weg...

Tabelle 1: Content
idnametitlecontent
1HalloHerzlich Willkommen!Wir begruessen Sie herzlich...
2UhrzeitDie aktuelle Uhrzeit<p>Uhrzeit: <javascript type="text/...
3BeispielseiteDas neue Beispiel!<p>In diesem Beispiel wird...


Tabelle 2: Tags (enthält auch Kategorien, diese werden jedoch genauso behandelt)
idnamedescriptiontype
1AllgemeinDie Allgemein-Kategorie.category
2SonstigesDie Kategorie für alles andere.category
3BegrüßungEine Begrüßungtag


Tabelle 3: Verbindungen
conent_idtag_id
13
11
22
32


Ich hoffe so wird es etwas verständlicher  :glad:  .
___________________________
:)
26.10.2010 19:40 Uhr

 

Status: offline
PHP:
1
2
3
SELECT `tag_id`, COUNT(`content_id`)
FROM `Verbindungen`
GROUP BY `tag_id`
Wenn du die Namen der Tags haben willst statt der ID, darfst gerne noch einen JOIN basteln, aber hast ja geschrieben, dass du JOINs schon kennst  :wink: 

Ist ungetestet.
___________________________
Butterfly Effect
It has been said that something as small as the flutter of a butterfly's wing can ultimately cause a typhoon halfway around the world.
- Chaos Theory
26.10.2010 19:54 Uhr

 

Status: offline
Aber in diesem Fall habe ich das Problem, dass ich nur Kategorien aufliste, die in Verwendung sind.

Ich möchte sämtliche Tags ausgeben (mit Namen) und der Anzahl an zugehörigen Verknüpfungen.

Ich fürchte, dass ich gerade nicht so klar denken kann  :roll:  .


Die erste Abfrage wäre:
MySQL:
1
SELECT id, name, description FROM tags WHERE type="tag" [ORDER BY ...]
Jetzt müsste dann in diese Abfrage noch das COUNT() rein.

Da bekomme ich irgendwie nichts funktionierendes zusammen.
___________________________
:)
26.10.2010 19:56 Uhr

 

Gelöscht #671
Programmierer
Status: offline
mysql:
1
2
3
4
5
SELECT t.id, t.name, t.description, COUNT(c.id) AS content_count
FROM tags t
JOIN verbindungen v ON v.tag_id = t.id
JOIN content c ON c.id = v.content_id
WHERE type="tag" GROUP BY t.id
So irgendwie, im Browser getippt.
1 mal bearbeitet
26.10.2010 20:40 Uhr

 

Status: offline
Danke, das funktioniert (fast) genau so wie ich es mir vorgestellt habe.

Problem(e):
  • Es werden nur Spalten ausgegeben, bei denen Verknüpfungen bestehen.
  • Die Abfrage Funktioniert nur ohne WHERE t.type="tag" (Es werden keine Spalten und kein Fehler ausgegeben.)



Zitat von 2639:
[...] darfst gerne noch einen JOIN basteln, aber hast ja geschrieben, dass du JOINs schon kennst  :wink: 

Ich kenne JOIN´s, aber die Kenntnisse sind derzeit leider noch etwas zu oberflächlich.
1 mal bearbeitet
___________________________
:)
26.10.2010 20:58 Uhr

 

Gelöscht #671
Programmierer
Status: offline
Zitat:
# Es werden nur Spalten ausgegeben, bei denen Verknüpfungen bestehen.

Das war so von mir beabsichtigt und lässt sich leicht verändert, indem man LEFT JOIN verwendet.

Zitat:
SELECT t.id, t.name, t.description, COUNT(c.id) AS content_count
FROM tags t
LEFT JOIN verbindungen v ON v.tag_id = t.id
LEFT JOIN content c ON c.id = v.content_id
WHERE type="tag" GROUP BY t.id


Somit werden auch Datensätze gefunden, zu denen kein rechter Partner existiert.

Zitat:
# Die Abfrage Funktioniert nur ohne WHERE t.type="tag" (Es werden keine Spalten und kein Fehler ausgegeben.)

Was es mit dem type-Problem auf sich hat, kann ich leider gerade nicht sagen.
1 mal bearbeitet
26.10.2010 21:08 Uhr

 

Status: offline
Zitat:
Das war so von mir beabsichtigt und lässt sich leicht verändert, indem man LEFT JOIN verwendet.

Das LEFT JOIN hab ich mir gerade in der MySQL-Doku durchgelesen, hatte etwas in diese Richtung vermutet - aber ich glaube, ich hätte da noch etwas gebraucht  :wink:  .

Zitat:
Was es mit dem type-Problem auf sich hat, kann ich leider gerade nicht sagen.

Ich sagte schon, dass ich gerade nicht klar denken kann.
Ich habe sieben Kategorien (manche mit einer, manche mit zwei Verknüpfungen) in der Tabelle und EINEN TAG: der natürlich ohne Verknüpfung.
Wenn ich jetzt nur die Tags ausgebe, aber Spalten ohne Verknüpfung nicht ausgegeben werden, dann...  :conf:   :roll:  .


Danke an alle  :glad:  .

___________________________
:)
Ähnliche Threads Forum Ähnlichkeitsgrad
 [gelöst] Fragen bezüglich MySQL Website & Webprogrammierung 1
 [gelöst] [MySQL] - Seitenumbruch nach z.B. 10 Postings Website & Webprogrammierung 1
 FTP wo und wie? Fragen zu cybton.com 1
 Mysql zwei Tabellen verbinden Website & Webprogrammierung 1
 [Problem] MySQL mehrere Einträge gleichzeitig verändern geht nicht Website & Webprogrammierung 1
 MySQL nur für Localhost Software & Betriebssysteme 1
 Atomatic Mail Respond [For example: Brithday reminder] Website & Webprogrammierung 1
nach obennach oben

Copyright © 2014 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news
ANEXIA - PHP Entwicklung - Web-Entwicklung - Fritz!Box Anrufmonitor für Mac OS - Rolladen, Markisen und Jalousien in Stuttgart - Rolladen in Stuttgart - SMSjobs