php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.02.2008, 01:23  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard mysql tags

Hallo,
ich möchte diverse (rund 5.000) Spalten einen tag zuweisen, dies soll so aussehen:

Tagtabelle:
id | tag
1 | xyz
2 | foo

Datesätze:
id | tags | inhalt |....
1 | 1 | lorem......
2 | 1,2 | lorem².....


nun möchte ich erreichen, ich eine query unentlich an tags (müssen nicht existieren) geben kann, und ich eine query, sortiert nach der anzahl der gefundenen tags pro datansatz zurückgibt. ich habe versucht dies mit in() zu lösen, dies war mir leider bis jetzt nicht gelungen, habt ihr eine idee?
notyyy ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.02.2008, 08:27  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Hi,

das ist eigentlich ganz einfach, aber nur bei einer normalisierten Datenbank. Du solltest die Beziehung zwischen den beiden Tabellen in einer neuen Tabelle darstellen und nicht wie jetzt in deiner tags-spalte mit komma getrennt.

Deine Tabellen könnten zum Beispiel so aussehen:

Tagtabelle:
IDtag | tag
1 | xyz
2 | foo

Datesätze:
IDcontent | inhalt |....
1 | lorem......
2 | lorem².....

Beziehungstabelle:
IDcontent | IDtag
1 | 1
2 | 1
2 | 2

EDIT:
Die Abfrage würde dann lauten:

Code:
SELECT tag,anzahl FROM (
SELECT tag,COUNT(IDcontent) As anzahl FROM tags LEFT JOIN beziehung AS bez ON tags.IDtag = bez.IDtag WHERE tag IN('abx','xyz') GROUP BY tags
) AS temp ORDER BY anzahl
cycap ist offline   Mit Zitat antworten
Alt 12.02.2008, 08:27  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard Re: mysql tags

Zitat:
Zitat von notyyy
nun möchte ich erreichen, ich eine query unentlich an tags (müssen nicht existieren) geben kann, und ich eine query, sortiert nach der anzahl der gefundenen tags pro datansatz zurückgibt. ich habe versucht dies mit in() zu lösen, dies war mir leider bis jetzt nicht gelungen, habt ihr eine idee?
Kannst du das noch auf Deutsch übersetzen?
Und dann deine DB normalisieren, dann ist es vermutlich kein Problem mehr.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 12.02.2008, 08:33  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
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

Also ich würde das ganze etwas anders lösen! Sprich "normalisieren". Du müsstest dafür eine neue Tabelle einführen.

Code:
Tagtabelle:
id | tag
1  | xyz
2  | foo
3  | bar

Datensätze:
id | inhalt
1  | lorem
2  | ipsum
3  | php is toll

Relationen:
id_datensatz | id_tag
1            | 1
2            | 1
2            | 2
Und jetzt kannst du mit GROUP BY arbeiten.

Inetwa so:
Code:
SELECT id_datensatz,
       COUNT(id_tag)
FROM Relationen
GROUP BY id_datensatz
ORDER BY COUNT(id_tag) DESC
*edit* Mei jetzt waren scho zwei schneller als ich so früh alle schon wach??
Flor1an ist offline   Mit Zitat antworten
Alt 12.02.2008, 08:39  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von RaZoR
*edit* Mei jetzt waren scho zwei schneller als ich so früh alle schon wach??
Dir auch einen guten Morgen xD
cycap 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
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Ideen für Tageszeitung mit XML, MySQL, PHP gesucht webazubi PHP-Fortgeschrittene 7 06.07.2006 12:25
Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
[Erledigt] MySQL Befehl für MySQL 4.0.24 Datenbanken 2 23.08.2005 17:35
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
Formatierung und HTML Tags in mySQL Text via PHP Datenbanken 4 11.01.2005 15:16
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
MySQL Erweiterungen nicht gefunden Datenbanken 4 27.08.2004 23:53
[Erledigt] PHP5 &a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mysql tags, mysql tags, mysql tags für suche, php suche mit mysql tags, php suche per mysql tags

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:18 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.