php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.03.2006, 11:13  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard Extrahieren aus 2 Tables mit einem bekannten Wert

Hallo zusammen - hab grad ein kleines Problem mit folgenden Tables:
Code:
Table "Kategorien"
 | id |   name   | parent_id |
 +----+----------+-----------+
 | 1  | autos    |     0     |
 | 2  | porsche  |     1     |
 | 3  | opel     |     1     |
 | 4  | obst     |     0     |
 | 5  | birnen   |     4     |
 | 6  | aepfel   |     4     |
 | 7  | renault  |     1     |
Dieses Table zeigt Kategorien einer Themengruppe. Die oberste Instanz einer Themengruppe ist immer mit parent_id=0 versehen. Die restlichen ordnen sich diesen unter.


Code:
Table "Content"
 | id | category | text         |
 +----+----------+--------------+
 | 1  | 2        |porschetext   |
 | 2  | 3        |opeltext      |
 | 3  | 7        |renaulttext   |
 | 4  | 3        |opeltext      |
 | 5  | 2        |porschetext   |
 | 6  | 5        |birnentext    |
 | 7  | 6        |apfeltext     |
Hier der Content der den Kategorien-ids in der Spalte "category" zugeornet ist.

Hab nun eingangs lediglich den Wert "auto" oder die id"1" für das Kategorie-Table zur Verfügung und möchte nun alle Artikel selektieren, die sich dem Bereich "auto" unterordnen, unabhängig von Unterkategorien wie "porsche" oder "opel".

Hat vielleicht jemand nen Tipp für mich ? Steh etwas aufm Schlauch !
__________________
IP-Popularität und Linkpopularität
ssm ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.03.2006, 11:24  
Gast
 
Beiträge: n/a
Standard

Hi,

bin nicht mehr ganz auf dem neuesten Stand bei MySql aber ich meine mich zu erinnern, dass Subqueries in aktuellen Versionen mittlerweile gehen. Das müsste dann so ausschauen (Pseudocode):

Code:
select id, text from content where category in (select id from kategorien where parent_id = $parent);
  Mit Zitat antworten
Alt 23.03.2006, 12:11  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

Klingt gut - nur geht leider nicht !
Das Subquery liefert zwar die richtigen ID´s - diese werden vom Hauptquery aber nicht erkannt.

Kann es sein dass ich das Ergebnis des Subquery noch neu formatieren muss ?
__________________
IP-Popularität und Linkpopularität
ssm ist offline   Mit Zitat antworten
Alt 23.03.2006, 12:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ssm
Klingt gut - nur geht leider nicht !
Das Subquery liefert zwar die richtigen ID´s - diese werden vom Hauptquery aber nicht erkannt.
Wie gesagt, ich weiss nicht, ab welcher Version MySQL Subqueries unterstützt und wie die genaue Syntax ist...das musst du selbst rausfinden

Btw...dieser Ansatz funktioniert eh nur, wenn dein Kategoriebaum nur eine Tiefe von 1 hat...sollte der beliebig tief sein, musst du das anders angehen. Entweder rekursiv (unschön, unperfomant), oder du fügst eine redundante Hilfsspalte in deiner Tabelle Kategorien ein (sowas wie kategoriezugehörigkeit, da kannst du für jede Unterkategorie die id der obersten Kategorie reinschreiben). Dann kannst du alle Unterkategorien wieder mit einem select kriegen...
  Mit Zitat antworten
Alt 23.03.2006, 12:24  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

ehhhh - hab ich doch schon mit parent_id
__________________
IP-Popularität und Linkpopularität
ssm ist offline   Mit Zitat antworten
Alt 23.03.2006, 13:30  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ssm
ehhhh - hab ich doch schon mit parent_id
Das ja...aber wie isses denn wenn du z.B. eine Popel Kadett als Unterkategorie von Opel anlegen willst? Dann ist dessen parent_id die id von Opel. Das habe ich mit "Baumtiefe > 1" gemeint...und dann geht der oben beschriebene Subselect nicht mehr so einfach ohne eine weitere Spalte. Wie gesagt, die Information in der Tabelle wäre redundant, da du es per Rekursion auch lösen kannst. Aber rekursive Queries sind von der Performance her nicht so schön...
  Mit Zitat antworten
Alt 23.03.2006, 13:42  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

Genau so ist parent_id ja in der Tabelle "Kategorie" geplant.

Daher suche ich für diese Art der Strukturgestaltung ja vernünftige Select-Statements.

Dass ich alle Artikel aus allen unterkategorien einer Hauptkategorie selektieren möchte ist ja auch nur einer von vielen Fällen.
__________________
IP-Popularität und Linkpopularität
ssm ist offline   Mit Zitat antworten
Alt 23.03.2006, 13:45  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ssm
Genau so ist parent_id ja in der Tabelle "Kategorie" geplant.

Daher suche ich für diese Art der Strukturgestaltung ja vernünftige Select-Statements.

Dass ich alle Artikel aus allen unterkategorien einer Hauptkategorie selektieren möchte ist ja auch nur einer von vielen Fällen.
Jo aber dieser Fall geht halt mit deiner aktuellen Struktur nicht vernünftig. Deswegen mein Vorschlag, deine Struktur zu erweitern...mussu ein Stückchen weiter denken
  Mit Zitat antworten
Alt 23.03.2006, 13:53  
ssm
Benutzer
 
Registriert seit: 21.03.2006
Beiträge: 65
ssm
Standard

Hmmmm - die Struktur des Kategorie-Tables hab ich von php-linkdirectory übernommen - das geht schon einwandfrei
Liefere zwar noch einen zusätzlichen Paramter mit - bin aber mit den Selects aus dem o.g. Beispiel nicht ganz zufrieden bzw. sicher, dass es einfacher gehen muss.
__________________
IP-Popularität und Linkpopularität
ssm ist offline   Mit Zitat antworten
Alt 23.03.2006, 14:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ssm
Hmmmm - die Struktur des Kategorie-Tables hab ich von php-linkdirectory übernommen - das geht schon einwandfrei
Liefere zwar noch einen zusätzlichen Paramter mit - bin aber mit den Selects aus dem o.g. Beispiel nicht ganz zufrieden bzw. sicher, dass es einfacher gehen muss.
Jo...wenn du dir sicher bist, dann hast du ja anscheinend selbst genügend Erfahrung und kommst sicherlich auch selbst drauf...viel Spass
  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
Fester Wert bei Registrierung festlegen themr Datenbanken 1 07.03.2008 14:41
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
wert aus einer tabelle mit wert aus andere tabelle ersetzen lindner Datenbanken 3 11.07.2006 17:20
Wie diesen Wert in eine DB einfügen? Mike² Datenbanken 5 29.03.2006 23:57
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
Vergleich von einem Wert, mit Werten aus einer Tabelle PHP Tipps 2005 14 01.11.2005 03:04
minus wert, plus wert in variable nutzen PHP Tipps 2005-2 5 22.10.2005 19:15
LOCK TABLES / LAST_INSERT_ID AliceD Datenbanken 3 20.07.2005 13:45
[Erledigt] Wert von Reihe 1 mit Wert von Reihe 2 tauschen Datenbanken 5 20.06.2005 17:21
Problem mit anzeige aus DB, erst nach refresh aktueller wert PHP Tipps 2005 7 27.04.2005 19:42
kleinsten und größten wert ermitteln niffi PHP Tipps 2005 14 26.04.2005 12:42
Wert automatisch erhöhen PHP Tipps 2005 5 13.02.2005 16:25
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31
[Erledigt] Checkbox Wert übergeben Datenbanken 4 12.08.2004 11:02
Wert eines Feldes abfragen und subtrahieren Datenbanken 4 04.07.2004 14:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
aus tabelle wert extrahieren, werte aus tabelle extrahieren

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