MySQL-Abfrage, die unbekannte Werte zurückgibt

Vor allem ist das ein wenig kompliziert zu erklären.

Ich habe Probleme mit nur einem CONCAT. Die folgende Abfrage gibt "Gebietsschema" -Werte zurück, die in der Tabelle nicht vorhanden sind.

SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', ?, '%') 
AND IFNULL(client.name, '') LIKE CONCAT('%', ?, '%') 
AND IFNULL(loc.description, '') LIKE CONCAT('%', ?, '%')
GROUP BY client.id
ORDER BY client.id DESC

Mein Tisch gibt folgendes wieder (RICHTIG):

-description-------name----------locale
-------------------------------------------
 Dude...         Testing         Paris
 No stop         Another         null
 Representing    null            null
 stackover       OneMore         London

Mit dem Code MySQL oben, wenn ich zu dem ändere, was ich will, habe ich diese seltsamen Ergebnisse:

SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', 'stackover', '%') 
AND IFNULL(client.name, '') LIKE CONCAT('%', 'OneMore', '%') 
AND IFNULL(loc.description, '') LIKE CONCAT('%', 'OK', '%')
GROUP BY client.id
ORDER BY client.id DESC



   -description-------name----------locale
   -------------------------------------------
     stackover       OneMore         OK

As you see, "Locale" -> OK doesn't exist.. This happens to a few values..and I can't figure out the connection between them.

Irgendwelche Ideen?

0
Ich habe den zweiten Operator, der hier vorbeikommt und sich anpasst, damit ihr versteht, dass ich es irgendwie vergessen habe.
hinzugefügt der Autor user3065191, Quelle
Sie sollten Backticks um den Alias ​​ von setzen, da es sich um ein Schlüsselwort handelt. Ihnen fehlt auch ein boolescher Operator (oder ein WHERE) zwischen ON loc.id = from.id_loc und client.description LIKE CONCAT ('%', 'stackover', '%' )
hinzugefügt der Autor AgRizzo, Quelle

1 Antworten

Ich bin mir nicht sicher, wo das Problem liegt

Ich habe Ihre Tabellen in der folgenden SQL Fiddle neu erstellt, und die Dinge scheinen gut zu funktionieren.

Bitte kommentieren Sie den Filter bei der Standortbeschreibung und markieren Sie ihn.

http://sqlfiddle.com/#!2/8f6a4c/

Können Sie bitte die Geige mit dem spezifischen Szenario aktualisieren, falls dies nicht zufriedenstellend ist.

0
hinzugefügt
Das Problem, Sie zu zeigen, ist, dass ich Tonnen von Aufzeichnungen habe (weil es sich mit einer Tabelle verbindet, die die Postleitzahlen hat ..) Obwohl ich denke, dass ich erreicht habe, den gleichen Fehler auf SQLFiddle zu machen. sqlfiddle.com/#!2/8d18b/9 Ich habe versucht mich anzupassen, damit könntest du +/- die Tabellen die ich habe und Felder verstehen.
hinzugefügt der Autor user3065191, Quelle
Übrigens, wenn ich die "GROUP BY" von meinem ursprünglichen Code entferne, erhalte ich tausende Datensätze, die nicht mit derselben ID existieren !!
hinzugefügt der Autor user3065191, Quelle
Ja. Ich bin zu demselben Schluss gekommen als du ... obwohl ich das irgendwie brauche. Die .CSV-Datei, die ich bei allen Städten erhalte, hat den Wert von Städten, die zu Städten gehören. Der Tisch ist also eine Art von: Stadt 1, Stadt 2, Stadt 3 gehört zu Stadt A :: Stadt 1, Stadt 2, Stadt 3 gehört zu Stadt B. etc..ist alles, was ich tun kann?
hinzugefügt der Autor user3065191, Quelle
Ich sollte wahrscheinlich einen anderen Tisch erstellen ..
hinzugefügt der Autor user3065191, Quelle
Danke, mit deiner Hilfe gelöst. Ich habe eine andere Tabelle mit dem Namen town_rel erstellt, um die Beziehungen zwischen den Tabellen herzustellen, und es funktioniert jetzt einwandfrei.
hinzugefügt der Autor user3065191, Quelle
Sie verwenden GROUP BY falsch. Der Grund dafür, dass du doppelte Datensätze hast, ist, dass du dieselbe ID_town für verschiedene Städte benutzt hast. Siehe sqlfiddle.com/#!2/fbc94d/1 .
hinzugefügt der Autor Geordee Naliyath, Quelle