2017-06-19 4 views
0

nehme ich 2 Tabelle, wo PID- und id ist Primärschlüssel und AutoinkrementErstellen Beziehung in SQL-Tabelle

  1. Eintrag enthält Spalte

    pid | post|  
    
  2. Verknüpfung enthaltende Säule

    id | pid | name 
    

und ich wenn Post-Daten zu holen (davon ausgehen, ich weiß, das [name], und ich will postid holen)

ich kann dies wie

$b=mysqli_query($connect,"SELECT pid FROM linking WHERE name='bla'") 
while($a=mysqli_fetch_array($b)){ 
    $c=mysqli_fetch_array(mysqli_query($connect,"SELECT post FROM posting WHERE pid='$a["pid"]' LIMIT 1")) 
} 

mit zwei Schleifen in PHP tun, aber ich weiß, dass es bessere Weise zu tun, ist, dass mit Beziehung in sQL, wenn jemand kann mir mit Abfrage helfen

i aussehen, aber etwas innere finden join, dass ich

+0

Vielleicht eher verwenden einen Join und holen. –

Antwort

0

Dies sollte es nicht tat verstehen:

SELECT pid FROM linking 
JOIN SELECT posting on linking.pid=posting.pid 
WHERE linking.name='bla' 

Und wenn Sie nur die erste Zeile der zweiten Tabelle möchten Sie etwas tun könnten:

auf einmal
SELECT * 
    FROM linking 
    LEFT JOIN posting a ON posting.pid = (
    SELECT 
     MIN(posting.pid) pid2 
    FROM posting p2 
    WHERE p2.pid2 = linking.pid 
) 
WHERE Linking.name='bla' 
+0

Wird oberhalb der Abfrage ausgeführt, die einen Fehler enthält – Aniket

+0

Welche Abfrage und welchen Fehler? –

+0

in 1 dieser ---> # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, für die richtige Syntax, die Sie in der Nähe von 'SELECT posting on linking.pid = posting.pid verwenden WHERE linking.name =' bla 'LIMIT 0, 30' in Zeile 2 ,,,,, in 2. Abfrage --- >>>> Unbekannte Spalte 'posting.pid' in 'on clause' – Aniket

Verwandte Themen