2015-07-11 11 views
16

chcą wprowadzić następujące zapytań SQL w Yii 2, ale nie został pomyślnieYii2: Jak napisać odrębne zapytanie sql?

SELECT count(DISTINCT(company_name)) FROM clients 

To powinno dać całkowitą liczbę unikalnych nazwa firmy

I

SELECT (DISTINCT(company_name,client_code)) FROM clients 

i to powinno wyświetlać Company_Name z kod klienta i id(PK)

jak to osiągnąć?

+0

Chcesz wrócić tabelę, która zawiera dwie kolumny: COMPANY_NAME i client_code; tylko niepowtarzalne wartości? Związek utworzy pojedynczą kolumnę obu nazw i identyfikatorów połączonych. Podejrzewam, że nie tego chcesz. Czy nie możesz po prostu: "wybrać odrębną nazwę firmy, kod_klienta od klientów"? –

+0

Najpierw chcę zliczać wszystkie Unique ** nazwa_apartamentu **, a następnie w drugim zapytaniu chcę wyświetlić listę wszystkich unikalnych ** nazwa_firmy ** i ** kod_klienta ** – JKLM

+0

Czy działa pierwsze zapytanie (np. (company_name)) ')? Składnia wygląda mi dobrze. –

Odpowiedz

5

odpowiedzi na moje własne pytanie mam następujące pracy Solutions

dostał liczyć na Niepowtarzalna nazwa firmy,

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

A lista odrębnego COMPANY_NAME i client_code przez -

$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

Mam nadzieję, że próbka ta jest przydatna dla Ciebie

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

do uzyskania dostępu do danych

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

Mam wysłać nową odpowiedź. mam nadzieję, że to jest dla ciebie właściwe. – scaisEdge

+0

Mam rozwiązanie, zaktualizowałem pytanie Dzięki za pomoc .. :) – JKLM

11

Spróbuj

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

w poszukiwaniu modelu

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, 
     ]); 
    ... 
} 

Nie Testowane!

1

Wszystko działało dobrze

return Clients::find()->count('DISTINCT(company_name)'); 
Powiązane problemy