Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-10-2010, 23:32   #1 (permalink)
n.a.
 
Registriert seit: Aug 2005
Ort: Berlin
Beiträge: 146
Daten aus ainer assoziierten Tabelle holen

Hallo zusammen!

Folgende Fragestellung:

Es gibt drei Tabellen (eigentlich vier, aber die Tabelle 'users' spielt hier keine Rolle): adverts [id, title], adverts_tags [advert_id, tag_id] und tags [id, word]. Wie man am Namen der zweiten erkennt, ist es eine Assoziation, durch die eine n:m-Beziehung zwischen den anderen beiden realisiert ist. Nun möchte ich gerne auf einer Seite eine bestimmte Anzeige ausgeben lassen, und zwar mit den Stichworten, mit denen sie vertaggt ist. Soll etwa so aussehen:

Code:
 Advert ID |   Title  |     Tags
1          | bla      | tag1, tag2, tag3
2          | foo      | tag1, tag2, tag3
3          | bar      | tag1, tag2, tag3
Mein Problem ist -- ich schaffe es nicht, folgende Abfrage um die Tag-Geschichte zu erweitern:

Code:
SELECT
    `adverts`.`id` AS `advertid`, `adverts`.`user_id`, `adverts`.`title`,
    `adverts`.`timesent`, `adverts`.`description`, `adverts`.`numvisits`, `users`.*
FROM `adverts`
INNER JOIN `users` ON adverts.user_id = users.id
WHERE (adverts.status = 'active') AND (adverts.id = '90')
Wäre sehr dankbar, wenn mir jemand helfen würde.
automatix ist offline   Mit Zitat antworten
Alt 02-10-2010, 00:41   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Hmm, versuchs mal mit einem Subselect:

Code:
SELECT
    t1.`id` AS `advertid`, t1.`user_id`, t1.`title`, t1.`timesent`, t1.`description`, t1.`numvisits`, 
    `users`.*,
    ( SELECT group_concat( t3.`word`, ', ') 
        FROM `tags` AS t3 
        LEFT JOIN `adverts_tags` AS t4 ON ( t3.`id` = t4.`tag_id` )
        WHERE t4.`advert_id` = t1.`id`
    ) AS tags
FROM `adverts` AS t1
LEFT JOIN `users` AS t2 ON t1.`user_id` = t2.`id`,
WHERE (t1.`status` = 'active') AND ( t1.`id` = '90')
ungetestet und ohne Gewähr, einen Join innerhalb eines Subselects hab ich auch noch nie benutzt
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 02-10-2010, 13:13   #3 (permalink)
n.a.
 
Registriert seit: Aug 2005
Ort: Berlin
Beiträge: 146
Hat auf Anhieb funktioniert, vielen lieben Dank!

Nachtrag:

Korrektur für die Trennzeichenkette:

Code:
SELECT
    adverts.`id` AS `advertid`, adverts.`user_id`, adverts.`title`, adverts.`timesent`, adverts.`description`, adverts.`numvisits`, 
    `users`.*,
    (
    SELECT GROUP_CONCAT(tags.`word` SEPARATOR '*TTT*') 
        FROM `tags`
        LEFT JOIN `adverts_tags` ON (tags.`id` = adverts_tags.`tag_id` )
        WHERE adverts_tags.`advert_id` = adverts.`id`
    ) AS tags
FROM `adverts`
LEFT JOIN `users` ON adverts.`user_id` = users.`id`
WHERE (adverts.`status` = 'active') AND (adverts.`id` = '201')

Geändert von automatix (02-10-2010 um 14:35 Uhr)
automatix ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
cairngorm: daten holen. Grau Flex programmieren 12 25-05-2010 06:20
Alle 30 Sek. XML Daten holen baal81 ActionScript 3 46 05-11-2009 16:22
XML-Daten von PHP holen nobima Flash Einsteiger 4 02-09-2007 23:02
Daten aus Datenbank holen eleven11 Server-Seite allgemein 8 12-02-2007 08:17
mittel php Daten in Flash holen sandy_w220 Flash MX 2004 1 19-02-2006 17:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele