tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
337
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Hallo zusammen,

    ich habe eine Tabelle: id, name, beschreibung, shortcuts

    Nun sollen die Suchbegriffe so ausgegeben werden, dass zuerst die Ergebnisse mit Fund im Namen, danach die mit Fund in der Beschreibung usw. ausgegeben werden.

    Grüße & Danke

    querytail
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    Code sql:
    1
    2
    3
    
    SELECT ... FROM ... WHERE name LIKE ...
    UNION ALL
    SELECT ... FROM ... WHERE beschreibung LIKE ...

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie sucht du denn?
    So?
    Code sql:
    1
    
    WHERE id = 'suchbegrif' OR beschreibung = 'suchbegriff' OER shortcuts = 'suchbegriff'

    Wenn ja, könnte man es so lösen, dass man zuerst die Suchbegriffe mittels UNION in eine Spalte bringt und gleichzeitig eine Gewichtung hinzufügt.

    Ich denke, etwa so einfach könnte es gehen
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    SELECT
        my_data.*
    FROM
        my_table AS my_data
        INNER JOIN (
            -- Eindeutige ID mit der kleinsten Priorität, falls der Suchbegriff in mehreren Feldern geunden wird
            SELECT
                d.id,
                MIN(d.priotity) AS priotity
            FROM
                (
                    -- Alle Felder mittels UNUIN in eine Spalte bringen
                    SELECT
                        id,
                        name AS VALUE,
                        1 AS priotity
                    FROM
                        my_table
                    UNION ALL
                    SELECT
                        id,
                        beschreibung AS VALUE,
                        2 AS priotity
                    FROM
                        my_table
                    -- etc.
                ) AS d
            WHERE
                -- WICHTIG! Hier ist die eigentliche Suche.
                d.VALUE LIKE '%suchbegriff%'
            GROUP BY
                d.id
        ) AS u_data ON my_data.id = u_data.id
    ORDER BY
        u_data.priotity,
        my_data.name;
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Dankeschön. Kann man die Suchergebnisse in sich noch sortieren bzw. eine gewisse Fehlertoleranz einfügen?
    Geändert von querytail (23.12.11 um 11:54 Uhr)
     

  5. #5
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    @yaslaw: Das ist Wahnsinn, wie schnell Du das umsetzt, aber für mich "noch" nicht zu überblicken. Nach der ID suche ich nicht. Name, Beschreibung usw. sollen durchsucht werden.
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Nach ID wird bei meinem auch nicht gesucht....

    Für die Fehlertoleranz mach dicm mal über MATCH..AGAINST... schlau
    http://dev.mysql.com/doc/refman/5.1/...xt-search.html
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Arraylist nach mehren Spalten sortieren
    Von schuetzejanett im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 06.06.07, 12:18
  2. Nach 2 Spalten sortieren
    Von dwex im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 28.04.06, 14:28
  3. Abfrage nach 2 spalten sortieren
    Von matthoz im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 08.01.06, 11:49
  4. [MySQL] Sortieren nach 2 Spalten?
    Von Suchfunktion im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 05.07.05, 13:59
  5. Nach mehreren Spalten sortieren?
    Von gerthsen im Forum Relationale Datenbanksysteme
    Antworten: 13
    Letzter Beitrag: 05.06.05, 00:28