php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.09.2011, 14:20  
Neuer Benutzer
 
Registriert seit: 13.10.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
eky79 befindet sich auf einem aufstrebenden Ast
Standard MySQL-Abfrage verschachteln - Problem

Ich habe ein Problem bei einer verschachtelten Datenbankabfrage.
Grundlage dafür sind 3 Tabellen:
1. files mit
+++++++++++++
+ id + name +
+++++++++++++

2. words mit
++++++++++++++++++++++
+ id + word + anzahl + lang +
++++++++++++++++++++++

3. fwz mit
++++++++++++++++++++++++++
+ fileid + wordid + seite + anzahl +
++++++++++++++++++++++++++

Hierbei sind die enthaltenen Wörter (Tabelle words) der Dokumente (Tabelle files) gespeichert. Verknüpft werden die 2 Datensätze mit der Tabelle fwz. Hier sind die fileid mit den wordid verknüpft (+ Seite + Anzahl).

Ich möchte dabei eine Abfrage erstellen, in welcher entsprechend dem Suchwort eine Vorschlagsliste geliefert wird. Also:
PHP-Code:
$erg=mysql_query("SELECT
                    word,
                    id,
                    anzahl
                FROM
                    words
                WHERE
                    word LIKE '$suchwort%' AND lang='$userlang'
                ORDER BY anzahl DESC, word ASC"
); 
Das ist soweit kein Problem.
Aber: es sollen nur Wörter angezeigt werden, die zu einer speziellen Kategorie gehören. Diese Kategorien können aus der Tabelle files -> name (dort der 16. Eintrag) ausgelesen werden. Wie kann ich also (z.B.) nur Wörter der Kategorie 1 anzeigen, die dem Suchwort entsprechen? Hier besteht ja nun die Hürde, dass die Verknüpfung nur über die Tabelle fwz geht...
eky79 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.09.2011, 14:41  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

dann bau das doch so ..

und joine die anderen beiden tabellen anhand der Fremdschlüssel dazu
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.09.2011, 15:24  
Neuer Benutzer
 
Registriert seit: 13.10.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
eky79 befindet sich auf einem aufstrebenden Ast
Standard

Naja, also wie schon geschrieben: damit habe ich ein Problem!
D.h., wenn mir jemand Hilfe anbieten könnte, wie das genau aussehen könnte, wäre ich sehr dankbar.
eky79 ist offline   Mit Zitat antworten
Alt 27.09.2011, 08:36  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

etwa so:

Code:
SELECT * FROM fwz
LEFT JOIN files on files.id=fwz.fileid
LEFT JOIN words on words.id=fwz.wordid
WHERE
   words.word LIKE '$suchwort%' AND 
   words.lang='$userlang' AND
   files.name='Kategorie 1' 
ORDER BY words.anzahl DESC, words.word ASC
aber bitte erläutere doch mal, wie du das meinst mit der Kategorie ... "bei files->name dort der 16te Eintrag ?

heißt das in files.name steht ein zusammengewürfelter Wert, der mehrere Granulare Werte enthält ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 27.09.2011, 09:30  
Neuer Benutzer
 
Registriert seit: 13.10.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
eky79 befindet sich auf einem aufstrebenden Ast
Standard

Erklärung: in der Spalte name steht die Datei, aus welcher die Kategorie (0... 9) ausgelesen wird. Diese Zahl steht an der 16. Stelle.
eky79 ist offline   Mit Zitat antworten
Alt 27.09.2011, 10:14  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

kannst du da mal bitte ein Beispiel geben, irgendwie hab ich Schwierigkeiten, mir das vorzustellen !?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 27.09.2011, 11:20  
Neuer Benutzer
 
Registriert seit: 13.10.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
eky79 befindet sich auf einem aufstrebenden Ast
Standard

Beispiel: "Files/web_ENG/1100_010000X_en.pdf"
eky79 ist offline   Mit Zitat antworten
Alt 27.09.2011, 12:23  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Und was machst Du, wenn die Files z.B. mal in einem anderen Verzeichnis liegen? Ich glaub, da solltest Du Dir ne bessere Adressierung als "an der 16. Stelle" überlegen.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 27.09.2011, 14:33  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

es tut mir leid .. aber der DateiNAME hat nur 15 Zeichen ?... was soll das werden ?

ansonsten schau dir halt mal substr an - das gibts auch in mysql

Code:
...
   substr(files.name,16,1)='$kategorie'
aber ich bin wie jens der Meinung, dass die Kategorie, wenn sie für deine Abfragen so wichtig ist, durchaus eine eigene Spalte verdient hat, um deine Anwendung einfach zu halten - ein einfacher "Umzug" der Dateien und du musst dein komplettes Script überarbeiten ... das kann es ja wohl nicht sein
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (27.09.2011 um 14:36 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 27.09.2011, 15:11  
Neuer Benutzer
 
Registriert seit: 13.10.2010
Beiträge: 13
PHP-Kenntnisse:
Anfänger
eky79 befindet sich auf einem aufstrebenden Ast
Standard

Bei mir wäre
Zitat:
substr(files.name,16,1)='$kategorie'
von "Files/web_ENG/1100_010000X_en.pdf" eine "1"

Zum Skript: danke für den Ansatz - momentan läuft es aber noch nicht (Problem: wenn ich das substr-Argument weglasse, sind viele Wörter in der Liste doppelt; wenn substr-Argument dabei, kommen keine Ergebnisse; Ergo: ich suche...)

Geändert von eky79 (27.09.2011 um 16:07 Uhr).
eky79 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 Timestamp Abfrage Problem imamk Datenbanken 18 11.08.2011 23:28
[Erledigt] MySQL - Abfrage bleibt Problem! yellow PHP Einsteiger 1 01.07.2011 13:47
[Erledigt] Problem mit MYSQL Abfrage in einer While Schleife mirko911 PHP Einsteiger 1 11.04.2011 11:54
Problem mit Abfrage - join, inner join, distinct? Gachet01 Datenbanken 2 27.01.2011 06:49
Problem mit Mysql abfrage wolfsmichel PHP Einsteiger 4 21.12.2010 22:35
[Erledigt] Problem mit SELECT Abfrage BlackBroom Datenbanken 4 28.05.2009 14:13
MySQL Abfrage Problem mit Where parti02 Datenbanken 14 23.10.2008 14:52
mysql Abfrage Problem mit dem Join test022 Datenbanken 5 28.04.2007 08:07
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
komplizierte mysql abfrage php_frage PHP Tipps 2007 5 28.12.2005 17:55
MySQL Abfrage Problem. web2 PHP Tipps 2005-2 7 25.07.2005 11:07
[Erledigt] MySQL Abfrage fieses Problem Datenbanken 5 21.07.2005 14:19
Problem mit Mysql Abfrage PHP Tipps 2005-2 0 11.07.2005 14:21
Problem mit mysql abfrage maximus PHP Tipps 2005 4 16.05.2005 19:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
verschachtelte mysql abfrage, mysql abfragen verschachteln, word 2010 verschachtelte abfrage, mysql substr abfrage in where, timestampabfrage mysql, mysql verschachteln, mysql abfrage verschachteln

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