Php diziler birleştirme ise "clientid"

3 Cevap php

Ben bir dizi geri veren bir sorgu var, ben aynı "İstemciKimliği" sahip dizi değerlerini birleştirmek mümkün olmak istiyorum

İşte benim sorgu var:

SELECT * FROM #__db_clients_trip WHERE clientid IN (1999, 2984, 1681) AND companyid IN (1,2)

İşte benim dizi var:

stdClass Object
(
    [id] => 61
    [trip_code] => EUR0600
    [clientid] => 1999
    [date] => 2000-06-17
    [invoice] => 
    [aud] => 0
    [wsale] => 0
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2
)

stdClass Object
(
    [id] => 89
    [trip_code] => 
    [clientid] => 2984
    [date] => 2000-03-18
    [invoice] => 
    [aud] => 0
    [wsale] => 0
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2
)

stdClass Object
(
    [id] => 176
    [trip_code] => EUR0799
    [clientid] => 1999
    [date] => 1999-07-09
    [invoice] => 
    [aud] => 0
    [wsale] => 0
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2
)

stdClass Object
(
    [id] => 281
    [trip_code] => EUR0299
    [clientid] => 1681
    [date] => 1999-03-01
    [invoice] => 30666
    [aud] => 1000
    [wsale] => 950
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2
)

stdClass Object
(
    [id] => 296
    [trip_code] => EUR0799
    [clientid] => 1681
    [date] => 1999-07-15
    [invoice] => 
    [aud] => 0
    [wsale] => 0
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2
)

Bu mümkün mü?

EDIT:

Istemci kimliği başına tek bir satırını göstermek için, ya şöyle diziyi birleştirmek için:

stdClass Object
(
    [id] => 61
    [trip_code] => EUR0600, EUR0799
    [clientid] => 1999
    [date] => 2000-06-17, 1999-07-09
    [invoice] => 
    [aud] => 0, 0
    [wsale] => 0, 0
    [margin] => 
    [comments] =>
    [comments_by] => 
    [companyid] => 2, 2
)

^ ^ Ya da böyle bir şey? Ben ClientID başına tek bir satır tahmin ediyorum daha kolay olurdu ..?

3 Cevap

Eğer sadece tek bir satır istiyorsanız, SQL sonuna bunu ekleyin:

GROUP BY clientid

: Eğer, (örneğin) bir clientid, değişiklik eşleşen tüm kayıtlar için son tarih almak istiyorsanız

SELECT *

Için:

SELECT *, MAX(date) AS latest_date

GROUP BY kullanırken bir 'birleştirilmiş' görünümünü almak için alanları MAX, MIN ve SUM gibi fonksiyonlar kullanabilirsiniz

Eğer sonuç üzerinde döngü ayarlamanız gerekir ve 2 boyutlu bir dizi kullanın ... Kendinizi birleştirme yok gibi geliyor ...

Tüm hakkında bakım ayrı bir İstemciKimliği ise, o zaman Farklı anahtar kelime kullanmanız gerekir:

select distinct(clientID) from clients