Suche nach eingegebenen Keywords
Linuchs
- meinung
- projektverwaltung
Moin,
ich brauche mal Meinungen zum Finden von Suchbegriffen in einem Veranstaltungskalender.
Der Suchbegriff wird hier eingegeben. Ab drei Zeichen werden per Ajax Treffer von einem PHP-Programm geholt.
Bisher habe ich die Eingabe so umgesetzt
// p510ajax.php
$value = strtoupper( str_replace( " ", "%", addslashes($arr_in['v']))."%" );
Und suche damit in fünf Tabellen:
noch nicht registrierte Veranstalter
Orte
Titel von Events
Veranstaltungstypen
registrierte Veranstalter
Ich zeige die ersten zehn Treffer an. Und bei Klick wird einer in das Suchfeld übernommen.
Fragen:
Bin offen für Ideen.
Gruß, Linuchs
als sechste Tabelle ziehe noch die Medien heran, also Hörproben. Die sechs SELECTS sind mit UNION verknüpft.
Nun gibt es dort beim Suchbegriff "veermas" mehrere Einträge für "Hamburger Veermaster". Den möchte ich aber nur einmal und bekomme den Fehler 1064, nachdem ich DISTINCT hinzugefügt habe:
...
)
UNION
(
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Medien
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT
'0' ITR
,'1' MED
,'0' ORT
,'0' TID
,'0' TRP
,'0' TYP
,'0' VIP
,DISTINCT med1.titel benennung
,'' land_kz
,'' plz
,'' ort_name
FROM medien med1
WHERE UPPER( med1.titel ) LIKE '%VEERMAS%' COLLATE utf8_bin
AND med1.zeit_erreichbar > '0'
)
UNION
(
...
Mehrfach-Einträge in anderen Tabellen möchte ich sehen. Sie können (aber müssen nicht) falsch sein.
Wie geht das?
Habe den DISTINCT wieder rausgenommen, damit ich weiterarbeiten kann.
Linuchs
Wie geht das?
Ich hatte ausser dem DISTINCT noch die Konstante ,'1' MED gesetzt, wo ich vorher ,med1.id MED hatte.
Nach Herausnahme des DISTINCT waren die Doppel-Einträge weg.
Habe hier was dazu gefunden:
"The default behavior for UNION is that duplicate rows are removed from the result."
Und wenn man alle rows haben will, heisst es UNION ALL. Oder eben ein zusätzliches Feld zum Unterscheiden. Muss einem ja geschrieben werden.
Linuchs