Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem bei Suche [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem bei Suche


 
Schneggo
14-08-2002, 09:00 
 
Ich will gerade eine Suche machen, die mehrere Tabellen durchsuche. Bei mir Hardware_Types, Hardware, Abteilung usw

Jetzt weiß ich nicht, wie ich das alles Verknüpfen soll. Ich hab jetzt mal so angefangen.


$sqlab = " select a.name, ht.type_pk, ht.type_desc, ht.HD, ht.graphics, ht.cd_dvd, ht.removable, ht.soundcard, ht.speakers, ht.processor, ht.RAM, ht.other1, ht.other2, h.pk_asset, h.type, h.serial_num, h.userID, h.o_s, h.sparePart, h.abteilung_fk, h.hostname from hw_types as ht, hardware as h, Abteilung as a ";
$sqlab .= " where ht.type_desc = '$ug' OR ht.HD = '$ug' OR ht.graphics = '$ug' OR ht.cd_dvd = '$ug' ";
$sqlab .= " OR ht.removable = '$ug' OR ht.soundcard = '$ug' OR ht.speakers = '$ug' OR ht.processor ='$ug' ";
$sqlab .= " OR ht.RAM = '$ug' OR ht.other1 = '$ug' OR ht.other2 ='$ug' OR h.type='$ug' OR h.serial_num ='$ug' ";
$sqlab .= " OR h.userID = '$ug' OR h.o_s= '$ug' OR h.sparePart = '$ug' OR a.name = '$ug' OR h.hostname = '$ug' ";
$sqlab .= " AND h.abteilung_fk=a.id_abteilung order by h.abteilung_fk ";


Aber irgendwie funktioniert das nicht.
bis jetzt gibt er egal, was ich eingebe alles aus.

z.B. bei Abteilung. In Hardware steht nur der fremdschlüssel drinnen (0,7,16 z.B.) und in Abteilung steht die ID und der Name. Wenn ich jetzt Abteilung eingebe, dann muss ich vorerst nur nach dem Namen in Abteilung selber suchen. Dann nehme ich die ID davon und sage, er soll alles ausgeben, wo die ID= fremdschlüssel ist??

Aber irgendwie steh ich auf dem Schlauch. Ich weiß nicht, wie ich das machen soll

 
MoRtAlAn
14-08-2002, 09:04 
 
mach dich mal mit dem Thema Joins vertraut, hier im Forum mal suchen, ansonsten auch mal hier schauen:
http://www.sqlcourse.com
http://www.sqlcourse2.com

gruss

 
Schneggo
14-08-2002, 09:15 
 
SELECT a.name, a.id_abteilung, h.fk_abteilung, FROM Abteilung as a LEFT JOIN hardware as h ON a.id_abteilung=h.fk_abteilung ;



soweit müsste das stimmen, oder? aber wo und wie bring ich jetzt den vergleich mit '$ug' ein und wie schreib ich das, dass er dann die richtige nummer zum vergleich hernimmt?

 
Schneggo
14-08-2002, 10:16 
 
ich komm hier nicht weiter. Ich kapier das nicht.:mad:

 
Schneggo
14-08-2002, 10:21 
 
Hier geht es schon an, was ist jetzt da falsch?


$sqlab = " select a.name, a.id_abteilung, h.abteilung_fk from hardware as h, Abteilung as a
where a.name='$ug' order by h.abteilung_fk ";


Es wird 6 mal Fertigung ausgegeben. Wie kann das sein, wenn es nur einmal in Abteilung drinnensteht?

 
Schneggo
14-08-2002, 10:32 
 
6 mal die Ausgabe von Fertigung kommt glaube ich daher, dass ich 6 Einträge in Hardware habe, aber was hat das damit zu tun?

 
Schneggo
14-08-2002, 10:49 
 
Also, ich habs jetzt so gelöst


$sqlab = " SELECT a.name, a.id_abteilung, h.abteilung_fk FROM Abteilung as a LEFT JOIN hardware as h ON a.id_abteilung=h.abteilung_fk WHERE a.name='$ug' ";

 
MoRtAlAn
14-08-2002, 10:55 
 
siehst du, es geht doch! ein bisschen probieren und irgendwann gehts :D

gruss

 
Schneggo
14-08-2002, 11:08 
 
zu früh gefreut!
Jetzt wollte ich das ganze mit 3 Tabellen machen, aber da wird folgender Fehler

Error: You have an error in your SQL syntax near 'LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='Fertigung' OR h.type' at line 1


geworfen.

hier ist mein code:

$sqlab = " SELECT a.name, a.id_abteilung, ";
$sqlab = " h.pk_asset, h.type, h.serial_num, h.userID, h.o_s, h.sparePart, h.abteilung_fk, h.hostname, ";
$sqlab = " ht.type_pk, ht.type_desc, ht.HD, ht.graphics, ht.cd_dvd, ht.removable, ht.soundcard, ht.speakers, ht.processor, ht.RAM, ht.other1, ht.other2 ";
$sqlab = " FROM Abteilung as a LEFT JOIN hardware as h ON a.id_abteilung=h.abteilung_fk ";
$sqlab = " LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='$ug'";


Kann mir bitte einer weiterhelfen, ich finde den Fehelr nicht.

 
goth
14-08-2002, 11:17 
 
Also ... das ist ja wohl definitiv nicht Dein Quellcode

Die Fehlermeldung lautet doch:
WHERE a.name='Fertigung' OR h.type'

Im Quellcode sehe ich aber nix von "OR h.type" ... ??

 
Schneggo
14-08-2002, 11:20 
 
Sorry, da hatte ich das oder noch drinnen, weil ich dachte, vielleicht geht es so

Hier die Fehlermeldung ohne OR
Error: You have an error in your SQL syntax near 'LEFT JOIN hw_types as ht ON h.type=ht.type_pk WHERE a.name='Fertigung'' at line 1

 
goth
14-08-2002, 11:27 
 
Also ich könnte mir vorstellen das ihm das Schlüsselwort Type nicht gefällt:

probier's mal mit Backticks für Type => `type` oder `h.type`

 
Schneggo
14-08-2002, 11:31 
 
Nö, das wars leider nicht.

 
Schneggo
14-08-2002, 11:47 
 
wenn man .= nicht macht, kanns nicht funktionieren:D

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:44 Uhr.