Zurück   RR:Board > Webmaster > Webentwicklung

Web-Technik: ASP, PHP, XML, Javascript, AJAX, SQL Datenbanken. Webentwicklung: CMS, Foren, Blog -Scripte.
Antwort
 
Themen-Optionen Thema durchsuchen

[Thema] - [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 16.01.2008, 16:19   # 1
NS5
Kabel Wurm
rot rot rot 
Bewertung:
NS5 hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Beiträge: 1.162
Power: 24
Hallo zusammen,

habe folgendes kleine Problem in PHP bzw. SQL und komme da gerade nicht weiter. Warscheinlicht recht simpel für euch ^^
Das ganze ist in 3 Tabellen aufgebaut und hat folgende Struktur :

Tabelle tblmovies :

Code:
ID Title 1 La La La 2 Blu Blu Blu
Tabelle tblcountry :

Code:
ID ShortName 1 UK 2 USA
Tabelle tblmoviesincountry (Referenztabelle) :

Code:
tblMovies_Id tblCountry_ID 1 1 1 2 2 1
Mit folgender Abfrage listet er mir alle Datensätze aus der Tabelle tblmovies auf inkl. der Informationen aus der Tabelle tblcountry. Über die Referenztabelle lässt sich da ja schön ein Bezug herstellen :

Code:
SELECT * FROM tblmovies AS m, tblcountry AS c, tblmoviesincountry AS mc WHERE mc.tblMovies_Id = m.ID AND mc.tblCountry_ID = c.ID ORDER BY m.Inserted DESC LIMIT 0,5;
Problem bei der Abfrage ist allerdings dass er mir den Datensatz 1 aus der tblmovies 2 mal auflistet da er auch 2 Einträge in der tblcountry Tabelle bzw. deren Referenztabelle besitzt. In wie weit muss ich jetzt die SQL Abfrage abändern dass er mir den Datensatz an sich nur ein mal anzeigt aber zusätlich noch die Information dass er in UK und USA spielt ? Habs schon mit GROUP BY probiert, allerdings verschluckt er da ja einen Datensatz.

Eine Möglichkeit wäre hier an Hand der tblmovies.ID auf die Referenztabelle zuzugreifen und zu gucken wie viel Einträge es für die tblmovies.ID gibt. Mit der Anzahl dann eine Schleife durchlaufen lassen und eine Variable dann immer mit den tblcountry.shortname füllen bzw. anhängen was ja gehen müsste da ich ja so auch Zugriff auf diese Tabelle habe.

Allerdings habe ich keine Ahnung wie ich da anfangen bzw. das umsetzen soll oder ob das überhaupt so geht.

Bin um jede Antwort dankbar.

Greetz
NS5
  NS5 ist offline   Mit Zitat antworten

Alt 16.01.2008, 16:24   # 2
Kolazomai
Confused Crap Coder
vip
Bewertung:
Kolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 PunkteKolazomai hat 2500 bis 5000 Punkte
Registriert seit: Oct 2005
Beiträge: 2.197
Power: 29
PHP->Webtechnik.

~moved~

Mfg,

Kolazomai



KSnoop2 - FTP Pub Scanner [v0.21]

Features: Multi-threaded Scan, IP-Liste als Txt, Multi-Range Option, Output summary, Settings auch als .ini-Datei, Connection- & FTP-Timeout, entwickelt fuer die Raid-Rush Community, u.v.m.
  Kolazomai ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 16.01.2008, 17:17   # 3
Mutator
Da geht noch einer!
rot rot 
Bewertung:
Mutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 PunkteMutator hat 1000 bis 2499 Punkte
Registriert seit: Mar 2006
Internet: DSL 6000
Beiträge: 685
Power: 21
du kannst doppelte einträge mittels UNION zusammenfügen... das ist eigentlich das gleiche wie GROUP BY nur halt verkürzt ^^

ob es auch bei MySQL geht must du ausprobieren ich kenne das nur vom SQL-Server 2000 ...

http://sql.1keydata.com/de/sql-union.php <- kannst du dir ja mal angucken

greetz Mutator

http://saved.im/mji4mtmxyw5h/signatur.png (url=saved.im/mji4mtmxyw5h/signatur.png)
-=[ Flickr (url=www.flickr.com/photos/mutator/)
]=[ leer xD ]=[ Gästebuch (url=www.graphicguestbook.com/mutator) ]=-
  Mutator ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 16.01.2008, 17:35   # 4
teh_boiiingerrr
Final Releaser
rot rot rot rot rot 
Bewertung:
teh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkte
Registriert seit: Sep 2006
Beiträge: 1.865
Power: 26
select mc.* from tblmoviesincoutry as mc
join tblmovies as m on mc.tblmovies_id=m.id
join tblcounty as c on mc.tblcountry_id=c.id
order by m.title

?

bin ich eigentlich der einzige, der die bezeichnungen (z.b. "tblcountry_id" und "tblmoviesincountry") für suboptimal hält?

[img]http://img169.imageshack.us/img169/2733/cupofstfuxc5.jpg[/img]

deutsch ist nicht zuviel verlangt: standard (www.k-faktor.com/standart/) - seit bei zeit, seid als verb (www.seitseid.de/)
  teh_boiiingerrr ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 16.01.2008, 19:40   # 5
NS5
Kabel Wurm
rot rot rot 
Bewertung:
NS5 hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Beiträge: 1.162
Power: 24
Themenstarter
@ Mutator : Keine schlechte Idee. Das Problem ist nur dass die 2 Ausgaben nach der SQL Anweisung ja nicht komplett identisch sind. Wie handhabt er dass denn dann mit dem ShortName Feld. Kannst du mal ein Beispiel posten wie du das dir gedacht hast ?
  NS5 ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 17.01.2008, 12:25   # 6
NS5
Kabel Wurm
rot rot rot 
Bewertung:
NS5 hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Beiträge: 1.162
Power: 24
Themenstarter
Hier nochmal kurz was um das Problem etwas zu veranschaulichen.
Die Datenbank - bzw. Tabellenstruktur steht ja oben.

Auf diese wird dann folgender SQL Befehl angewendeT :



Die Ausgabe sind einfach alle Einträge der tblmovies inkl. derer aus der tblcountry auf die durch die tblmoviesincountry referenziert wurde. Wichtig ist hier allerdings nur die beiden ID Spalten :



Der Film 5 hat somit 2 Country Einträge. Wenn ich nun das komplette Ergebnis der Abfrage über eine Schleife ausgeben lasse, listet er mir natürlich den kompletten Film 2 mal auf. Einmal für und mit der Country ID 2 und einmal die 3.

Das will ich aber nicht. Ich möchte einen Eintrag für den Film 5 haben, allerdings dann direkt mit beiden Country IDs also es sollte dann quasi folgendes da stehen : Country 1 / Country 2 und nicht 2 komplett neue Einträge für den Film.

Über folgenden Befehl kann ich mir die Movie IDs inkl. der Anzahl angeben wie oft für den Film ein Countryeintrag vorhanden ist :





Und da steh ich momoentan auf dem Schlauch. Wie kann ich das Ergebnis am besten auswerken so dass ich keine 2 Einträge vorfinde, sondern 1 Eintrag mit den 2 Daten wie oben beschrieben.

Besten Dank im Vorraus.
  NS5 ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 17.01.2008, 18:34   # 7
teh_boiiingerrr
Final Releaser
rot rot rot rot rot 
Bewertung:
teh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkteteh_boiiingerrr hat 1000 bis 2499 Punkte
Registriert seit: Sep 2006
Beiträge: 1.865
Power: 26
schau dir mal GROUP_CONCAT an, vielleicht bringt dich das weiter. damit kannst du mehrere spalten zu einer einzigen verketten.

[img]http://img169.imageshack.us/img169/2733/cupofstfuxc5.jpg[/img]

deutsch ist nicht zuviel verlangt: standard (www.k-faktor.com/standart/) - seit bei zeit, seid als verb (www.seitseid.de/)
  teh_boiiingerrr ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 17.01.2008, 19:53   # 8
NS5
Kabel Wurm
rot rot rot 
Bewertung:
NS5 hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Beiträge: 1.162
Power: 24
Themenstarter
Genial. Genau das hab ich gesucht. Das bringt mich schon um einiges weiter ^^ Hab schon gedacht dass es irgendwas zum GROUP BY geben muss um die Strings aneinander zu klatschen, hab aber nix gefunden.

Wenn ich jetzt folgenden Befehl under phpMyAdmin eingebe bekomme ich auch schön den Film mit der ID 5 angezeigt und in der 2. Spalte steht dann Country 1 / Country 2.

Code:
SELECT m.Title, GROUP_CONCAT (c.ShortName SEPARATOR ' / ') FROM tblmovies AS m, tblcountry AS c, tblmoviesincountry AS mc WHERE mc.tblMovies_Id = m.ID AND mc.tblCountry_ID = c.ID GROUP BY m.Title;
Wenn ich den aber jetzt in meiner Page einbinde bringt er mir folgende Meldung :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... line 99

... in welcher folgends steht ...

$anz = mysql_num_rows ($sqlerg);

Ne Ahnung an was das liegen kann ? Kann es sein dass der mit der Syntax diese Group_Concat aus welchen Gründen nicht klar kommt und das irgendwie verhunzt ? Bin hier gerade mal auf die Suche genangen.

BW ist dir aber schonmal sicher. Besten Dank.
  NS5 ist offline   Mit Zitat antworten

AW: [PHP & SQL] 2 Datensätze nur 1 x ausgeben
Alt 17.01.2008, 21:04   # 9
NS5
Kabel Wurm
rot rot rot 
Bewertung:
NS5 hat die Renommee-Anzeige deaktiviert
Registriert seit: Sep 2005
Beiträge: 1.162
Power: 24
Themenstarter
Hat sich erledigt.
Hab das Problem gefunden.
Mal bis morgen warten ob sich noch was ergibt, sonst kann er zu gemacht werden.
Nochmal Thx.
  NS5 ist offline   Mit Zitat antworten
Antwort

RR:Board > Webmaster > Webentwicklung > [Thema] - [PHP & SQL] 2 Datensätze nur 1 x ausgeben


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[SQL] - Bestimmte Werte ausgeben flawlessT Schule, Studium, Ausbildung 2 22.01.2012 16:52
[SQL] & [PHP] Pro neue ID eine neue Seite erstellen naitsgang Webentwicklung 11 19.12.2011 23:12
[PHP] - Javascript per Php ausgeben live Webentwicklung 7 08.02.2011 11:42
[PHP / SQL] Tabelleninhalte sortiert ausgeben 010100111001 Webentwicklung 3 29.05.2008 13:41
Letzte ID (SQL Tabelle) als Int Wert ausgeben lassen Hennington Webentwicklung 4 11.08.2006 15:03



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.
vBulletin Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.