2017-01-31 2 views
0

Ich habe derzeit einen logischen Fehler in meiner SQL-Abfrage. Ich möchte die Datensätze anzeigen, wenn ich nach dem Nachnamen und dem Vornamen des Datensatzes zwischen den Jahren suche.sql - Suchabfrage

Hier ist mein Code:

SELECT 
    * 
FROM 
    tablename 
WHERE 
    LastName LIKE 'value%' 
     AND FirstName LIKE 'value%' 
     AND Year BETWEEN '1900' AND '2017' 

Wie das ich tun?

+0

* "Wie mache ich das?" * - Machst du es jetzt nicht? Was funktioniert hier nicht? Möglicherweise müssen Sie dafür auch Klammern verwenden. –

+1

sieht "Wert" sieht eher aus wie "schreibe es für mich" und "rate, wie mein DB-Schema aussieht" Art der Frage –

+0

Was nicht funktioniert? Die Abfrage sieht gut aus. Erhalten Sie Reihen, die Sie nicht bekommen sollten? Erhalten Sie keine Zeilen, die Sie bekommen sollten? Zeige Beispiele. –

Antwort

0

Vielleicht ist Ihre Jahr-Spalte als Ganzzahl gespeichert. Wenn dies der Fall ist, entfernen Sie die Anführungszeichen um die Jahreswerte 1900 und 2017 und die Abfrage sollte wie erwartet funktionieren.

+2

Welchen Unterschied würde das Entfernen der Zitate machen? MySQL wird das kompensieren –

+1

@ Fred-ii-Ja, aber warum nicht es gleich an erster Stelle? –

0

, wenn Sie SQL verwenden, versuchen Sie dies:

1- wenn Jahr int

SELECT 
* 
FROM 
tablename 
    WHERE 
    LastName LIKE 'value%' 
    AND FirstName LIKE 'value%' 
    AND columnx >= 1900 AND columnx <= 2017 

2- gespeichert wird, wenn wie 01-01-1999 gespeicherte Datum verwenden Sie die folgende

SELECT 
* 
FROM 
tablename 
    WHERE 
    LastName LIKE 'value%' 
    AND FirstName LIKE 'value%' 
    AND year(columnx) >= 1900 AND year(columnx) <= 2017