Nasıl reklam ve ilanı almak için bu SQL deyimi yazıyorsunuz?

2 Cevap php

Bu SQL deyimi yazmak için nasıl mantık üzerine biraz karıştı. Bir kullanıcı bir etiketi tıkladığında, HTML, onun etiketi gibi HTML ile tüm mesajları görüntülemek söylüyorlar. (Bir post birden çok etiketi olabilir)

I have three tables:

  1. Posting-->posting_id, title, detail, etc
  2. etiketleri -> TagId, tagname
  3. postingtag -> posting_id, TagId

Ben her yazının başlığı ve ekledi tarihi görüntülemek istiyorum.

    global $dbc;
    $tagID=$_GET['tagID']; //the GET is set by URL

    //part I need help with. I need another WHERE statment to get to the posting table
    $query = "SELECT p.title,p.date_added, t.tagname FROM posting as p, 
    postingtag as pt, tags as t WHERE t.tagID=$tagID";

   $data = mysqli_query($dbc, $query);

  echo '<table>';
  echo '<tr><td><b>Title</b></td><td><b>Date Posted</b></td></tr>';
  while ($row = mysqli_fetch_array($data)) {         
     echo '<tr><td>'.$row['title'].'</td>';
     echo '<td>'.$row['date_added'].'</td></tr>';
     }
  echo '</table>';
}

Ben mySQL yüzden hala tüm mantığını anlamaya çalışıyorum için oldukça yeni :)

2 Cevap

Bu daha net ANSI sözdizimi kullanılarak yazılır:

select p.title, p.date_added, t.tagname 
from posting p
inner join postingtag pt on p.postingID = pt.postingID
inner join tags t on pt.tagID = t.tagID
where t.tagID=$tagID

OrbMan çözümü harika! Ben bu tablolar arasındaki orijinal çapraz ürün kullanarak aynı sorguyu nasıl görmek için daha iyi anlamanıza yardımcı olabilir düşündüm. Eğer orijinal sözdizimi tutmak istiyorsanız, size bazı ek nereye koşulları eklemek gerekir:

SELECT p.title, p.date_added, t.tagname
FROM
posting as p, 
postingtag as pt,
tags as t
WHERE
    p.postingID = pt.postingID AND pt.tagID = t.tagID AND t.tagID = $tagID