mysql soru katılmak

3 Cevap php

Ben aşağıdaki sütunları ile iki tablo var:

tablo1:

id, agent_name, ticket_id, category, date_logged

Tablo2:

id, agent_name, department, admin_status

Ne elde etmek çalışıyorum bir ajanlar bölüm tablo2 eşit olduğunu tablo1 tüm satırları seçin etmektir.

Ben birkaç farklı ifadeleri katılmak denedim ama sözdizimi yanlış alıyorum ya da sadece bu tablo kurulum ile çalışmaz. Ben MySQL geldiğinde bir acemi ve ben join okudum ne yelpazenin karmaşık ucunda!

Ben kabul ettik Bir diğer seçenek tablo1 içine sütun "departmanı" çoğaltma ama bu önyüz üzerinde biraz daha kodlama gerektirir ve ben bunu yaparken olmadan istenilen sonuç elde edebilirsiniz görmek için çalışıyorum.

Herhangi bir yardım büyük takdir.

3 Cevap

I don't quite understand your question... Only table2 have a department, the only thing they have in common is agent_name.

Eğer ajan belli bir bölümünden olduğunu Tablo1'e tüm satırlar, ne istediğiniz olduğunu istiyorum: Ben gerçekten ne demek olduğunu sanıyorum musunuz? Bu durumda, böyle bir şey (gerçi bunu test değil) yapmak gerekir:

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_name = Table2.agent_name 
      WHERE Table2.department = 'somespecific value';

BTW: bir dize değeri gibi agent_name sesler (başka ne birisi tarafından dedi esinlenerek), gerçekten belki, agent_id diyelim (tablo1 de bir anahtar olarak tablo2 kimliği kullanarak düşünmelisiniz ) bunları birbirine bağlamak için. Yabancı anahtarlar (tablolar arasındaki bağlantı) gerçek benzersiz bir kimliği olmalıdır. Departmanı pobably allso bir kimliği anahtarı olmalıdır. Sonra olurdu:

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_id = Table2.id 
      WHERE Table2.department = 'somespecific value';

Ben tam olarak anlayamıyorum rağmen, ihtiyacınız ne ve nasıl tabloları ilgili, ben Someting benzer denemek istiyorum:

select 
    a.id, a.agent_name, a.ticket_id, 
    a.category, a.date_logged, b.department
from 
    table1 a inner join table2 b on b.agent_name=a.agent_name

Şu anda ben AGENT_NAME üzerinde tabloları bağlamak gerektiğini varsayarak yaşıyorum.

BTW, SQL yelpazenin basit sonudur katıldı :)

Bunun yerine hem aracısı adını kullanarak iki tablo arasında eşsiz bir ilişkisel anahtarı eklemek istediğiniz ısırıyorlar. Böyle bir şey:

Table1: id, agent_id,  ticket_id, category, date_logged
Table2: agent_id, agent_name, department, admin_status

Bir SQL örnek:

SELECT t2.agent_name, t1.date_logged FROM table1 t1
INNER JOIN table2 t2 ON t2.agent_id = t1.agent_id

Eğer dış çeşit katılmak kullanmak isteyebilirsiniz, ancak bu yüzden internet üzerinden bazı makalelere bir göz atın öneririz.