2015-07-11 9 views
16

Möchten Sie in YII 2, aber nicht erfolgreichYii2: Wie schreibe ich eine eindeutige SQL-Abfrage?

SELECT count(DISTINCT(company_name)) FROM clients 

Das sollte Gesamtzahl von Unique Firmenname

Und

SELECT (DISTINCT(company_name,client_code)) FROM clients 

und dies sollte company_name zeigen folgende SQL-Abfragen implementieren mit Kundencode und id(PK)

Wie erreiche ich das?

+0

Sie wollen eine Tabelle zurück, die zwei Spalten: company_name und client_code; nur eindeutige Werte? Die Union erstellt eine einzelne Spalte mit Namen und IDs kombiniert. Ich vermute, das ist nicht das, was du willst. Könntest du nicht einfach: 'markanten Firmennamen, Kundencode von Kunden auswählen? –

+0

Zuerst möchte ich die Anzahl aller Unique ** comapny_name ** und danach in der zweiten Abfrage möchte ich alle eindeutigen ** company_name ** und ** client_code ** – JKLM

+0

Listet die erste Abfrage arbeiten (dh 'count (distinct (Firmenname)) ')? Die Syntax sieht gut aus. –

Antwort

5

meine eigene Frage zu beantworten habe ich lösungs- folgende Arbeits

die Zählung erhielt für Eindeutiger Firmenname,

$query = new Query; 
    $my = (new yii\db\Query()) 
    ->select(['company_name',]) 
    ->from('create_client') 
    ->distinct() 
    ->count(); 
    echo $my; 

Und Liste verschiedener company_name und client_code durch -

$query = new yii\db\Query(); 
      $data = $query->select(['company_name','client_code']) 
     ->from('create_client') 
     ->distinct() 
     ->all(); 
     if($data) { 
     foreach($data as $row) 
     { 
     echo 'company_name: ' . $row['company_name'] . ' client_code: ' . $row['client_code'] . '<br>'; 
      } 
     } 
3

Ich hoffe, dass diese Probe für Sie

$names = Yii::$app->$db->createCommand('SELECT count(DISTINCT(company_name)) as name FROM clients') 
    ->queryAll(); 

für den Zugriff nützlich ist die die Daten

foreach ($names as $name){ 
    echo $name['name']; 
} 
+0

Ich habe eine neue Antwort. ich hoffe, das ist für dich richtig. – scaisEdge

+0

Ich habe die Lösung, aktualisiert die Frage Danke für die Hilfe .. :) – JKLM

11

Versuchen Sie, diese

$total = YourMOdel::find()->select('company_name')->distinct()->count(); 

in Suchen Modell

public function search($params) 
    { 
     $query = YourMOdel::find()->select('company_name')->distinct(); 
     // or 
     $query = YourMOdel::find()->select(['company_name', 'client_code'])->distinct(); 

     $query->orderBy('id desc'); 


     $dataProvider = new ActiveDataProvider([ 
      'query' => $query, 
     ]); 
    ... 
} 

Nicht getestet!

1

Alle fein gearbeitet

return Clients::find()->count('DISTINCT(company_name)'); 
Verwandte Themen