Suchfunktion über 2 Tabellen

mordi

Mitglied
Hiho!
Ich schreibe grad ne Metallcommunity, in der auch alben gespeichert werden. Ich bin so gut wie fertig, aber bei einer Sache bleibe ich hängen:
der Suchfunktion.
Ich möchte gern die SELECTs für beide Tabellen in einem Query durchführen, habe aber keinen Schimmer, wie ich das bewerkstelligen soll. Ich dachte an UNION, aber dann ist mir aufgefallen, dass es das erst ab Version 4 gibt :D

meine Tabellen sehen folgendermaßen aus:
alben
id|link|groesse|album|interpret|...

videos
id|link|groesse|video|interpret|...

mein Ziel ist es, einen Query zu schreiben, in dem Beide Tabellen nach Kriterien abgefragt werden (WHERE interpret LIKE '%bla%' AND...)
und dann ZUSAMMEN sortiert.

Hat jemand vielleicht eine Ahnung, wie ich das machen könnte? Ich bin für jede Hilfe dankbar...


mfg,
mordi
 
hallo mordi,


ich weis nicht ob man so 2 tabellen durchsuchen kann, aber eine aufjedenfalll. wenn du bei * from alben oder videos wegnimmst.

sonst 2 select anfragen hintereinander stellen. müsste auch gehen.

PHP:
$sql = "select * from alben, videos WHERE (link like '".$such."%' or groesse like '".$such."%' or album like '".$such."%' or video like '".$such."%' or interpret like '".$such."%')";
$result = mysql_query($sql, $db);// or error("Query konnte nicht ausgeführt werden!");
$treff = mysql_num_rows($result);

viel spass beim testen.

ciao

SaTaN
 
@satan fast richtig :-)

$sql = "select * from alben, videos WHERE alben.album like '".$such."%' or videos.video like '".$such."%' or alben.interpret like '".$such."%' or videos.interpret like '".$such."%')";

link und grosse habe ich mal rausgeworfen .. man muss sql beim join schon sagen in welcher tabelle suchen soll

angabe ist so: tabelle.feldname
 
Moin,

fehlt da nicht noch das CROSS JOIN ?

Ich würde die Struktur, der Datenbank, vielleicht noch etwas abändern.
- Eine Tabelle mit deinen Videos und Alben. (spalten sind ja fast gleich)
- Eine Tabelle mit der ART --- Video oder Album
- Eine Verknüpfungstabelle mit den jeweiligen ID's

Dann wird das Abfragen auch einfacher und schneller.



Gruß Tex
 
@texaner

nö ein komma in mysql ist ein cross join

select * from alben, videos
select * from alben join videos
select * from alben cross join videos

is in mysql alles eine sosse trotzdem gebe ich dir recht texaner man sollte sich die komplette schreibweise angewöhnen wenn man aus versehen auf eine richtige sql datenbank umsteigt muss man es eh komplett angeben ..

und mit dem aufbau der tabellen haste auch recht dann könnte man ein left join machen und das ist wesentlich flotter ....
 
Zuletzt bearbeitet:
hallo @all,

sorry mein fehler.

hoffe das mordi da weiter geholfen wurde.

@melmager
mich würde es sehr interessieren wie es denn richtig aussehen soll.
falls es dich also überwindet , dann würde es mich freuen
hier den richtigen code zu finden.

thanks

bye, bye

SaTaN
 
@satan

select * from einetabelle join anderetabelle where einetabelle.feldname like 'jomei%'
nach dem motto :-)

wie gesagt du warst ja eigendlich richtig nur das bei der where abfrage der feldname allein nicht reicht sondern die tabelle angegeben werden muss ..

warum wird klar wenn man die tabellen von hier ansieht: in video und in alben gibt es ein feld id
wenn du nun sagst
where id = '5' woher soll das arme sql denn wissen welches id du meinst also angabe
video.id = '5' erst dann ist es eindeutig
selbst wenn das feld nur in einer tabelle vohanden ist mault er beim join wenn du ihm nicht sagst wo denn das feld zu finden ist
.....
Computer ist halt doof
denn 1 computer ersetzt 1000 dumme und kann genausoviele fehler in 1 sekunde machen die die in 100 jahren *g*

wenn mal zeit hast kuck doch mal hier *g* das ist ein join *G*
http://www.tutorials.de/tutorials65988.html
 
Zuletzt bearbeitet:
Zurück