Beziehung Tabellen mit JOIN

Fruitgum

Erfahrenes Mitglied
Hallo,

wir machen es schnell...


Habe 2 Tabellen...

create table video(
video_id integer not null auto_increment,
video_sprache integer not null,
video_name char(30),
video_titel char(30),
video_xml1 char(200),
video_lession integer not null,
primary key(video_id));

create table xml2(
video_xml2 integer not null auto_increment,
video_id integer not null,
xml2_datei char(30),
xml_lang char(100),
primary key(video_xml2));


In der Tabelle Video stehen meine Videos und in der xml2 Untertitel.

Nun will ich ja nur bestimmte untertitel zu einem bestimmten Video mit in eine Selectbox anzeigen lassen.

Hier die Selectbox:

PHP:
<?php 
include = ('config.php;')

$sql=" <<<Hier müsste ne idee rein >>>'";
$catget = mysql_query($sql) or die(mysql_error());
$row_catget = mysql_fetch_assoc($catget);
$totalRows_catget = mysql_num_rows($catget);
?>  
    <form action="vid_xml.php" method="post" name="sprachauswahl" id="sprachauswahl">
<select name="c2" id="$sprachauswahl" class="language_form" onChange="this.form.submit()" >
<option selected>Untertitel w&auml;hlen</option>

<br>

<?php

do {  

?>

<option value="<?php echo $row_catget['xml2_datei'];?>"><?php echo $row_catget['xml2_datei']; ?></option>
<?php

} 

while ($row_catget = mysql_fetch_assoc($catget));
	  $rows = mysql_num_rows($catget);
  
    if($rows > 0) {
      mysql_data_seek($catget, 0);
      $row_catget = mysql_fetch_assoc($catget);
  }
?>

</select><input type="hidden" name="send_check" value="on">
</form>
?>

ich will das mit JOIN machen, da die video_id aus tabelle video und die video_id aus der tabelle xml2 in beziehung stehen...

Doch komme mit der Query net so klar, ich verstehe die Logink net so richtig...


HILFE


LG
 
Schreib doch mal eine Idee, auch wenn sie noch so falsch ist. Dann können wir sage, was du ändern solltest und warum.

Ich kann dir schon schnell ein SQ zusammenstiefeln, dann weisst du aber immer noch nicht wie es geht. Und alles erklären ist mir ein wenig zu viel.

Oder du schaust dir mal meine Lösung an, die ich dir hier (http://www.tutorials.de/forum/relationale-datenbanksysteme/349674-beziehung-mysql-1-n.html) schon mal geschrieben habe (ich meine das SQL)
 
$sql="SELECT * FROM video LEFT JOIN (xml2) ON video.video_id = xml2.video_id WHERE xml2.video_xml2='$video_id'";

so...?

Geht aber nicht!


Grüße
 
2 Punkte fallen mir bei deinem SQL auf.

1) SELECT * von was?
Zu * braucht es immer eine Quelle. Wenn du nur eine Quelle hast (SELECT auf eine Tabelle), nimmt er automatisch diese. Bei mehreren Quellen muss man sie aber angeben.
also um alle Fleder beider Quellen auszugeben müsste es etwa so aussehen:
Code:
SELECT video.*, xml2.* FROM .....

2) Join
Entwerder verbindest du die Tabellen über einen Join, oder über WHERE.
So wie du es hast, ists nicht falsch, einfach doppelt gemoppelt

Mittels JOIN:
Code:
SELECT 
    video.*,
    xml2.*
FROM
    video LEFT JOIN xml2 ON (video.video_id = xml2.video_id)

oder mittels WHERE
Code:
SELECT 
    video.*,
    xml2.*
FROM
    video,
    xml2
WHERE
    video.video_id = xml2.video_id

So, hoffe geholfen zu haben
 
Zuletzt bearbeitet:
Okay das geht... Aber ich habe glaube ich einen anderen Fehler. Er zeigt bei allen Videos alle Untertitel an.

das komische bei den sprachen geht es ja auch!

ich wähle eine Sprache per Selectbox und er zeigt mir an welches Video unter einer Sprache gespeichert ist.

und da habe ich so gemacht


PHP:
<?php
include ('config.php');

$video_id = $_POST['sprachauswahl'];
$sql = "SELECT * FROM video LEFT JOIN (sprachen) ON video.video_sprache = sprachen.video_sprache WHERE video.video_sprache='$video_id'";


	$query = mysql_query($sql); 
	while($row = mysql_fetch_assoc($query)) 
{  
		
  $titel_vid = $row['video_titel'];
  $id_vid = $row['video_name'];
  $xml1_id = $row['video_xml1'];
        
		echo "<br>";
		echo "<a href=\"vid.php?vid=". $id_vid ."&xml1_id=".$xml1_id."\" rel=\"nofollow\" title=\"Video\">".$titel_vid."</a>";
		echo "<br>";  

 
}
mysql_close() ;  
?>

ich weiß da oben ist der Query komisch, bloß der Geht!

Grüße

NACHTRAG: habe ihne dann so gemacht "$sql = "SELECT * FROM video WHERE video.video_sprache='$video_id'";" so wie ich dich verstanden habe. und es geht!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück