CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |

10.12.2005, 13:38:12
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 44
|
|
SQL-Abfrage liest Werte nicht aus :(
Hallo,
meine SQL-Kenntnisse stammen im Wesentlichen aus http://www.sql-und-xml.de/sql-tutori...-mit-join.html .
Ich habe zwei Tabellen, eine heißt DEF, eine GEBIET.
Primärschlüssel von GEBIET ist ID_GEBIET. Dieser ist, mit gleichem Namen, Fremdschlüssel in der Tabelle DEF (1:1).
Auslesen möchte ich aus der Tabelle DEF die Spalte DEF, aber nur wo der entsprechende Primärschlüssel ID_DEF den Wert $id_val hat, sowie über den Fremdschlüssel ID_GEBIET die entsprechenden Werte GEBIET aus der Tabelle GEBIET. Das ist mein Code, er gibt mir aber für DEF.DEF und GEBIET.GEBIET keine Werte zurück:
PHP-Code:
$sql_def = "SELECT
DEF.ID_GEBIET,
DEF.DEF,
GEBIET.ID_GEBIET,
GEBIET.GEBIET
FROM
DEF AS DEF INNER JOIN GEBIET AS GEBIET
ON
DEF.ID_GEBIET = GEBIET.ID_GEBIET
WHERE
DEF.ID_DEF = $id_val";
Was mache ich falsch?
|

10.12.2005, 18:10:42
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Wie sieht der Inhalt/die Struktur der beiden Tabellen aus?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

10.12.2005, 18:53:43
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Versuch mal meine verkürzte Version:
$sql_def = "
SELECT DEF.DEF, GEBIET.GEBIET
FROM DEF
LEFT JOIN GEBIET ON DEF.ID_GEBIET = GEBIET.ID_GEBIET
WHERE DEF.ID_DEF = '$id_val'";
Du kannst die Query im phpMyAdmin testen und dabei modifizieren, um Fehler zu finden. Wenn nichts ausgegeben wird, z. B. mal die WHERE-Klausel weglassen...
Ach ja, danach natürlich nicht
PHP-Code:
$result = mysql_query($sql_def);
vergessen.
|

10.12.2005, 21:39:08
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 44
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Die DE-Klausel ist das einzige, was zu funktionieren scheint.
Meine Datenbanktabellen sehen, vereinfacht, wie folgt aus:
Tabelle DEF
_________
ID_DEF Primärschlüssel
ID_GEBIET Fremdschlüssel
DEF
...
Tabelle GEBIET
__________
ID_GEBIET Primärschlüssel
GEBIET
ID_GEBIET kann in der Tabelle DEF n Mal vorkommen.
Anstatt den Zahlenwert will ich aber den String ausgeben, der in der Tabelle GEBIET abgelegt ist.
|

11.12.2005, 17:53:43
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 44
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Also, nachdem ich feuervogels allgemeine Ratschläge nochmals beherzigt habe (ich hoffe, es ist mir gelungen), habe ich nun insegamt diesen Code:
PHP-Code:
foreach($id_def as $id_val) {
$sql_def = "SELECT
DEF.ID_GEBIET,
DEF.DEF,
DEF.ANM,
GEBIET.ID_GEBIET,
GEBIET.GEBIET
FROM
DEF As DEF INNER JOIN GEBIET As GEBIET
ON
DEF.ID_GEBIET = GEBIET.ID_GEBIET
WHERE
DEF.ID_DEF = '$id_val'";
$result = mysql_query($sql_def) OR die(mysql_error());
$row_def = mysql_fetch_assoc($result);
echo "<tr style=\"vertical-align:top;\">"
."<td><strong>Fachgebiet:</strong></td>"
."<td>".$row_def['GEBIET']."</td></tr> \n"
."<tr style=\"vertical-align:top;\">"
."<td><strong>Definition:</strong></td>"
."<td>".$row_def['DEF']."</td></tr> \n"
."...";"
}
Ich bekomme keine Fehlermeldung. Ohne den JOIN auf die Tabelle GEBIET hat die Abfrage auch einwandfrei funktioniert, nun gibt sie einfach keine Werte aus (erstellt aber die richtige Anzahl Tabellenzeilen; $id_var wird ja weiterhin korrekt ausgelesen, die WHERE-Klausel funktionert). Also, denke ich mal, habe ich den JOIN falsch konstruiert. Ich kann aber nix erkennen, was falsch sein sollte. Vielleicht könnt Ihr mir weiterhelfen.
@Marilu: LEFT JOIN statt INNER JOIN sorgt dafür, dass Werte aus der tabelle DEF wieder ausgegeben werden. Werte aus der Spalte GEBIET der Tabelle GEBIEt werden aber weiterhin keine ausgegeben.
Geändert von mattfi (11.12.2005 um 18:42:46 Uhr)
|

11.12.2005, 19:32:00
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 44
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Wieder mal... Asche auf mein Haupt -- das mangelnde Auslesen von GEBIET.GEBIET lag daran, dass es für den Fremdschlüssel keinen Wert gab.
Trotzdem wäre ich ohne die Korrektur von INNER JOIN in LEFT JOIN nicht weiter gekommen. An dieser Stelle Danke für den Tipp.
Ich habe haber grundsätzliche Verständnisprobleme was die Attribute von JOIN anbelangt. Ich wäre dankbar, wenn jemand mal mengenschematisch darstellen könnte, was innen, außen sind, und was links und rechts nicht nur bewirken, sondern tatsächlich sind.
|

11.12.2005, 19:57:21
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Vielleicht hilft dir diese Seite da ein wenig weiter.
|

11.12.2005, 20:06:08
|
Anfänger
|
|
Registriert seit: Dec 2005
Beiträge: 44
|
|
AW: SQL-Abfrage liest Werte nicht aus :(
Danke, xabbuh. Die Seite habe ich heute abend durchgelesen. Die Infos sind mir zu abstrakt. Mit Mengendarstellungen, etwa wie in http://tut.php-q.net/array.html#u8 , könnte ich vermutlich mehr anfangen.
Beispiel: Was heißt "innen"? Innen von was? Da muss es ein Mengenmodell geben, etwa aus konzentrischen Kreisen, und innen ist eine Menge, außen eine andere. Irgendwo hängen die Mengen mit den Tabellen zusammen. Wenn ich das nachvollziehen bzw. richtig zuordnen könnte, dann ergäbe sich -- jedenfalls für mich -- alles weitere aus den verwendeten Begriffen.
Eine schöne Woche wünscht
mattfi
Geändert von mattfi (11.12.2005 um 20:06:33 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:01:42 Uhr.
|