Tablolar sorunu Katıl - MySQL &

3 Cevap php

İki tablo katılmaya çalışıyorum. İlk tablo 'id' bir otomobil kimliği alanında 'ile site_names' olan 11 maddelik bir listesi vardır. Ben bağlanmak istiyorum ikinci tablo 'desc_id' ve 'açıklamaları' başka bir alanın bir otomobil kimliği alanına sahiptir. Bu ikinci tablo şu I tablo 1'de sadece 1 id için görünmesini istediğiniz veri 3 satır vardır.

Yani, gerçekleştirmek istediğiniz tüm ikinci tabloya '1 'bir kimliği ile tablodaki tek tek ilk site bağlayacak.

Ben, nasıl tbl.2-> desc_id-> 1 2 (tb.1-> id-> 1 tablodaki tüm satırlara tablo 1 de sadece ilk giriş (id = 1) bağlamak anlamaya gibi olamaz 2,3).

Ben bu anlamda yapılan umuyoruz. Herhangi bir yardım büyük olurdu. Teşekkürler

3 Cevap

Deneyin:

select site_name, descriptions
from table_1
inner join table_2
  on 1 = 1
where table_1.site_id = 1

Bu ne istediğinizi size katılmalısınız.

Tamam - Yorum dayalı, ne istediğini tahmin ediyorum:

site1 | desc1 | desc2 | desc3

tek bir satırda bütün. Eğer açıklamaları keyfi bir dizi açık kalmasını istiyorsanız, özellikle eğer - bu biraz zordur. Sadece 3 (sayı kadar gider ya, gerçekten, herhangi sınırlı bir alt kümesi, ancak, o çirkin olur), yapabileceğin için:

select site_name, t2.desc, t3.desc, t4.desc
from table_1 
inner join table_2 t2
  on t2.desc_id = 1
inner join table_2 t3
  on t3.desc_id = 2
inner join table_2 t4
  on t4.desc_id = 3
where site_id = 1

Bu tür şeyler olsa da son derece düzensizdir. Lütfen şeması hakkında bir şey ihtiyacının bu tür oluşturmak için muhtemelen oldukça doğru değil gibi geliyor bana.

İşte sorgu:

<?php

        $mysql = new mysqli('localhost', 'root', 'root') or die('counld not connect');
        $result = $mysql->query("SELECT ajax_demo.explore.site_name, anthony1.property.descriptions FROM ajax_demo.explore INNER JOIN anthony1.property ON ajax_demo.explore.id = anthony1.property.desc_id") or die($mysql->error);

        if($result) 
        {
                                        while($row = $result->fetch_object()) 
                                        {
                                                $id = $row->id;
                                                $siteName = $row->site_name;
                                                $siteDescription = $row->site_description;


                                                echo "$siteName";
                                                echo "$siteDescription";
                                        }
        }

    ?>

Ben burada bir şey eksik olabilir, ancak Sitesi tabloya yabancı anahtar eklemek gerekir gibi geliyor bana. Sorunuzu doğru anlamak, sizin tablolar bu gibi görünmelidir:

Site
- SiteID
- DescriptionID
- SiteName

Description
- DescriptionID
- Description

Sonra Siteleri ve ilişkili Açıklamaları almak için sorgu aşağıdaki gibi olacaktır:

SELECT
  s.SiteName,
  d.Description
FROM
  Site s INNER JOIN Description d
    ON s.DescriptionID = d.DescriptionID

Bu tablo yapı çoklu Siteleri (sizin nakledilen soru başı olarak) tek Açıklamaları paylaşmak olduğunu varsayar.