| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |

26-02-2010, 06:45
|
|
SusiSorglos
Registrierter Benutzer
|
|
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 42
|
|
Spalten mit mehreren Werten vergleichen
Ich finde hierzu keinen passenden Lösungsweg.
Ich habe EINE Tabelle mit vielen Datensätzen. Darin enthalten sind Keywords.
In der einen Zelle steht 'hund katze maus' und in einer anderen steht z.B. 'tiger esel hund' (Kann auch gerne durch einen Seperator getrennt sein)
Ich möchte nun gerne in allen Datensätzen nach einem der drei Wörtern suchen. In dem Beispiel würde z.B. 'hund' übereinstimmen.
Weiss vielleicht jemand wie man das in eine SQL Abfrage packt ??
Cu Susi
__________________
PHP 5.3.2, MySql 5.0.67
Geändert von SusiSorglos (26-02-2010 um 06:49 Uhr)
|

26-02-2010, 09:24
|
 |
schmalle
  Ich Root, Du nix
|
|
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
|
|
Code:
SELECT
was_weiss_ich_was
FROM
tabelle
WHERE
ueberdenkenswerte_spalte LIKE '%HUND%'
|

26-02-2010, 09:46
|
|
SusiSorglos
Registrierter Benutzer
|
|
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 42
|
|
neeee. so war das nicht gemeint.
Es soll nur dann ein Result liefern wenn das Wort "hund" ODER "katze" ODER "maus" enthalten ist.
Ich habe also einen String mit einer unbestimmten Anzahl von Wörtern die durch ein SPACE oder "," getrennt sind.
__________________
PHP 5.3.2, MySql 5.0.67
|

26-02-2010, 09:52
|
 |
schmalle
  Ich Root, Du nix
|
|
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
|
|
wie sieht die tabelle denn jetzt aus?
Code:
id | keyword
--------------
1 | hund
--------------
2 | katze
--------------
3 | fisch
oder so
id | keyword | keyword2 | keyword3
--------------------------------------
1 | hund | katze | fisch
|

26-02-2010, 10:01
|
|
SusiSorglos
Registrierter Benutzer
|
|
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 42
|
|
Nagut... nochmal etwas genauer.
Ich betreibe ein NewsPortal. Jedem Artikel möchte ich nur ca 3 Keywords zuweisen. Diese werden dann zum jeweiligen Artikel in EINE Spalte geschrieben.
Wenn nun ein anderer Artikel auch innerhalb der Spalte "keywords" z.B. den Begriff "Auto" notiert hat, möchte ich dies somit verknüpfen und dem Leser als Linkvorschlag ausgeben.
Wenn der Leser sich für (Auto, Porsche, reifen) interessiert -> interessiert er sich sicherlich auch für (Auto, Ferarri, schnell)
Das klappt. Es läuft schon, aber leider bekomme ich es nur mit EINEM Wort hin. Es wäre aber sicherlich von vorteil, wenn es mehrere Keyword enthalten könnte.
Ich hoffe das war etwas verständlicher!?
Cu Susi
__________________
PHP 5.3.2, MySql 5.0.67
Geändert von SusiSorglos (26-02-2010 um 10:05 Uhr)
|

26-02-2010, 10:12
|
 |
schmalle
  Ich Root, Du nix
|
|
Registriert seit: Jun 2001
Ort: Egelsbach FFM
Beiträge: 9.170
|
|
Zitat:
Zitat von SusiSorglos
Ich hoffe das war etwas verständlicher!?i
|
ja, aber besser macht es die Sache nicht :-)
PHP-Code:
$string_keywords = "hund,katze, fisch";
$ar_key = explode(",", $string_keywords);
$ar_like = array();
for($i=0; $i<count($ar_key); $i++)
{
$str = trim($ar_key[$i]);
if(!empty($str))
{
$ar_like = "'".mysql_real_escape_string($str)."'";
}
}
$where = '';
if(count($ar_like))
{
$where = "(\nkeywords LIKE ";
$where .= implode(" OR keywords LIKE ", $ar_like);
$where .= "\n)\nAND";
}
$query = "SELECT
id_artikel
FROM
artikel_tabelle
WHERE
".$where."
freigabe = 1 /* oder was auch immer Du so brauchst */";
// TODO: run query
|

26-02-2010, 10:24
|
|
SusiSorglos
Registrierter Benutzer
|
|
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 42
|
|
Vielen Dank für Deine Mühe.
Das könnte so klappen.
Ich hatte nur gehofft das es vielleicht ganz ohne php geht. Weil ich ca 20-30 Artikel auf einmal auslese und diese dann jeweils mit 1000 Artikel vergleichen muss. Sind dann 20.000 - 30.000 Abfragen pro Seite und User. Das müsste man dann wohl schon über Temp machen.
Ich werde es heute Abend mal dem php Umweg probieren. Mal sehen wie sehr es das System belastet.
Bis heute Abend.
Cu susi
__________________
PHP 5.3.2, MySql 5.0.67
|

26-02-2010, 10:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo Susi,
besser du normalisierst die DB noch ein bisschen, lagerst Keywords in eine eigene Tabelle aus und verbindest die über eine n:m-Relation mit der Artikeltabelle.
Dann kannst du das Suchen nach ähnlichen Artikeln gleich in einer Abfrage erledigen und sogar noch mit einer einfachen Relevanzsortierung ausstatten.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

26-02-2010, 18:38
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.180
|
|
Ist ja nicht das erste mal, dass dir die Normalisierung ans Herz gelegt wird. Aber gelernt hast du aus den vermeidbaren Problemen der Vergangenheit immer noch nicht...
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|