2017-05-29 1 views
0

Ich habe eine Tabelle mit einer Spalte von Branchen und Namen. Ich kann die Werte basierend auf Industrie erhalten, indem Sie die folgende Abfragedoppelte Datensätze mit unterschiedlichen Werten in MySQL Tabelle

SELECT * 
FROM `people` 
ORDER BY `industry` ASC, `name` ASC 

in meinen Tabellen gibt es Aufzeichnungen (Menschen) mit dem gleichen Branchen. Gibt es eine Möglichkeit, sie unter der gleichen Leistung zu haben? jetzt die Abfrage dieser

industry1 
------ 
name1 

industry1 
------ 
name2 

industry2 
------ 
name 
---------------------------------------------------- 

wie kann ich es auf diese Weise haben?

industry1 
------ 
name1 
name2 

industry2 
------ 
name 

var num = 0; 
 
    for(var i = 0;i < r.length; i++) { 
 
    var country = r[i].country; 
 
    if(i < r.length-1) nextCountry = r[i+1].country; 
 
    
 
    
 
    
 
    if(lastCountry != country && nextCountry == country) { 
 
     num = 0; 
 
    } 
 
    %> 
 
    
 
    <div class="<%= lastCountry %> <%= country %> <%= nextCountry %>"></div> 
 
     <div class="contact-list"> 
 
     <div class="contact-info contact-padding"> 
 
      <% if(r[i].industry) { %> <h2 class="h-style"><%= r[i].industry %></h2> <% }%> 
 
      <span class="name"><%= r[i].name %> <% if(r[i].segment) { %>&#40;<%= r[i].segment %>&#41;<% }%></span> 
 
      <span class="phone"><%= r[i].phone %></span> 
 
      <span class="email"><%@ "generic_email" %></span> 
 
     </div> 
 
     </div> 
 
    
 
    <% 
 
    \t num++; 
 
    var lastCountry = country; 
 
    } 
 

 
    %>

diese Ansicht ist, die ich gebaut und verbrauchen die Daten, es wiederholt sich einfach gleiche Teile des Codes für jeden Datensatz. Wenn ich versuche, GROUP BY zu verwenden, es gibt nur

ONE OF THE INDUSTRIES 

name1, name2,name3,name4, ... 
phone number 
email 
+0

Bedeutet, dass Sie Ergebnis in einer Spalte angezeigt werden soll? –

+0

@FahadAnjum ja, Leute mit gleichen Industrie-Tags sollten in einer Spalte gruppiert sein – k185

+0

Ernsthaft ernsthaft in Betracht ziehen, Probleme der Datenanzeige in Anwendungscode – Strawberry

Antwort

0

Wenn ich Ihre Anforderung eindeutig zu verstehen, müssen Sie so etwas wie

SELECT `industry`,GROUP_CONCAT(`name`) as name 
FROM `people` 
GROUP BY `industry` 
ORDER BY `industry` ASC 

Dies wird Ihnen 1 Zeile pro industry und name von comma verkettet. Wenn Sie verschiedene separator wie Rohr oder Raum möchten, verwenden Sie GROUP_CONCAT(name SEPARATOR <custom separator>)

+0

GROUP_CONCAT, concat alle Namen in einer Zeile unter einer Spalte der Industrie. Es eliminiert alle anderen Industrien und behält nur die letzte. Als Ergebnis habe ich nur eine Branche mit allen Namen darunter. hat nicht geholfen – k185

+0

'Es beseitigt alle anderen Industrien und behält nur die letzte '=> es gibt nichts, genannt' last' oder 'first', wenn Sie' group by' verwenden. Sie erhalten Zeilen für alle "verschiedenen" Branchen, dh 'industry1'' industry2'. Fügen Sie die Beispieldaten und die erwartete Ausgabe in Tabellenform in die Frage ein. – Utsav

+0

Ich habe die Ansicht aktualisiert – k185

0

Verwenden Sie einfach GROUP BY für diese beiden Spalten.

SELECT * FROM Menschen GROUP BY-Industrie, Name ORDER BY industry ASC, ASC name

Verwandte Themen