Mailinglisten-Archive |
> Nur aus Interesse: wie kann man bei Kai's Lösung die Tabellen unter
> Berücksichtigung der Mehrdeutigkeiten verknüpfen?
na einfach mit id zu id tabelle
Tab1 (ID, Wort, Lang)
Tab2 (local_ID, foreign_ID)
>
>
> Ich habe jetzt eine akzeptable Geschwindigkeit mit dieser Lösung:
>
> $sql = "SELECT * ";
> $sql .= " FROM $tabelle AS tab_id ";
> $sql .= " INNER JOIN $tabelle1 AS tab_de ON tab_id.id_de = tab_de.id_de ";
> $sql .= " INNER JOIN $tabelle2 AS tab_ro ON tab_id.id_ro = tab_ro.id_ro ";
> $sql .= " ORDER BY tab_de.deu, tab_ro.rum ";
ich würde es so machen:
SELECT `tab_de`.`deu`,
`tab_ro`.`rum`
FROM `tab_de`
LEFT JOIN `tab_id` ON `tab_de`.`id_de` = `tab_id`.`id_de`
LEFT JOIN `tab_ro` ON `tab_id`.`id_ro` = `tab_ro`.`id_ro`
ORDER BY `tab_de`.`deu`,
`tab_ro`.`rum`
> $sql .= " WHERE tab_de.deu = '$such_de' ";
> $sql .= " WHERE tab_de.deu like '%$such_de%' ";
für diese zwei einen INDEX auf `tab_de`.`deu`
> $sql .= " WHERE MATCH (tab_de.deu) AGAINST ('$such_de') ";
für diesen einen FULLTEXT auf `tab_de`.`deu`
> Die Bedingungen habe ich wieder entfernt wegen der tollen Möglichkeiten
> von PHP (vor allem "soundex()" in Kombination mit "spliti()"):
das könnte aber irgendwann ziemlich viel werden oder?
>
> $suchstring12 = soundex($suchstring);
> $deu_array = spliti ('[, ]', $deu);
> for($ig=0;$ig<(count($deu_array));$ig++)
> {
> $suchstring6d = soundex($deu_array[$ig]);
> if ( $suchstring12==$suchstring6d ) {$gefunden=1;}
> }
>
> Ich weiß, SOUNDEX gibt's auch für SELECT, aber kann das obige Beispiel
> auch in mySQL realisiert werden?
WHERE SOUNDEX(`tab_de`.`deu`) = SOUNDEX('suchstring')
--
Sebastian Mendel
www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive