2016-06-30 12 views
1

Ich habe die folgende SQL-Abfrage:ohne verbinden mit und Vereinigung

SELECT t1.id as id, 
     t1.username as username, 
     CONCAT_WS(' ', t2.ad,t2.soyad) as fullname, 
     t2.title as title, 
     t3.pass as password, 
     t3.phone_login as hat, 
     t2.time as date 
FROM kullanici t1, kullanici_tanim t2, dial_users t3 
WHERE t1.id = t2.usr_id AND t1.agent_id = t3.user_id 
GROUP BY t1.id 
ORDER BY t1.id ASC 

Diese Abfrage funktioniert gut. Was ich frage mich ist, sollte ich Joins verwenden? Was ist der richtige Weg?

+0

Verwenden Sie 'JOIN' s; Sie sind technisch schon mit den Bedingungen in Ihrer 'WHERE'-Klausel, aber Sie tun dies in einer archaischen und schmerzhaft zu lesen. – Uueerdo

+0

Wenn funktioniert gut, was ist das Problem .... nur ein Tipp ... Fördern Sie die Verwendung von expliziten 'JOIN' sintaxis, schrieb Aaron Bertrand einen schönen Artikel [Bad Gewohnheiten zu treten: mit alten Stil JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) darüber. –

+0

sogar beide geben das gleiche Ergebnis wie von jetzt Sie Cross Join mit where Bedingung wo wie in Join-Bedingung werden Sie nach erforderlichen Spalten – mohan111

Antwort

0

Verwenden Sie für ANSI-92-compliant code Joins. Zum Beispiel:

SELECT t1.id as id, 
      t1.username as username, 
      CONCAT_WS(' ', t2.ad,t2.soyad) as fullname, 
      t2.title as title, 
      t3.pass as password, 
      t3.phone_login as hat, 
      t2.time as date 
FROM kullanici t1 
    INNER JOIN kullanici_tanim t2 
    ON t1.id = t2.usr_id 
    INNER JOIN dial_users t3 
    ON t1.agent_id = t3.user_id 
GROUP BY t1.id 
ORDER BY t1.id ASC 
+0

filtern, wenn ich löschen "GROUP BY t1.id", bekomme ich jede Zeile zweimal. Wie kann ich für jede ID ohne Gruppe einen bekommen? – Invictus26

+0

Warum möchten Sie GROUP BY nicht verwenden? – bernie

+0

Ich möchte lernen, ob es möglich ist, nur ein Ergebnis pro Zeile ohne Gruppe zu erhalten? – Invictus26