SQL Abfrage in PHP mit AS
Mika
- datenbank
0 Jaroslav Jablonski0 dr.colossos0 dedlfix0 Mika
Hallo zusammen,
ich habe eine MySQL-Abfrage nach folgendem Schema:
SELECT *, (SELECT status FROM tabelle2 WHERE tabelle1.processingStatus = tabelle2.id) AS test FROM
tabelle1 WHERE Feld1
LIKE 'irgend eine Postvariable' OR
test LIKE 'irgend eine Postvariable';
Ohne die letzte LIKE-Anweisung funktioniert die Abfrage eiwandfrei.
Am Anfang definiere ich "test" als Ergebnis für die Unterabrfrage.
Wie kann ich dieses "test" in die letzte Like-Abfrage einbauen dass es funktioniert????
ich bekomme folgende Fehlermeldungen:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programme\typo3\htdocs\typo3wamp\typo3conf\ext\ph_aenderungen\pi1\class.tx_phaenderungen_pi1.php on line 310
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Programme\typo3\htdocs\typo3wamp\typo3conf\ext\ph_aenderungen\pi1\class.tx_phaenderungen_pi1.php on line 382
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programme\typo3\htdocs\typo3wamp\typo3conf\ext\ph_aenderungen\pi1\class.tx_phaenderungen_pi1.php on line 397
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Programme\typo3\htdocs\typo3wamp\typo3conf\ext\ph_aenderungen\pi1\class.tx_phaenderungen_pi1.php on line 492
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\typo3\htdocs\typo3wamp\typo3conf\ext\ph_aenderungen\pi1\class.tx_phaenderungen_pi1.php:310) in C:\Programme\typo3\htdocs\typo3wamp\typo3\sysext\cms\tslib\class.tslib_fe.php on line 2767
ich bekomme folgende Fehlermeldungen:
Na toll, und wo bitteschön fragst du den Fehler beim Absetzen des Statements ab? Das, was da steht, sind Folgefehler, weil mysql_query kein gültiges Resultat liefert. Siehe http://de.php.net/manual/de/function.mysql-query.php
JJ
Hi,
Na toll, und wo bitteschön fragst du den Fehler beim Absetzen des Statements ab?
Ungültige Abfrage: Unknown column 'status' in 'where clause'
Hello,
Ungültige Abfrage: Unknown column 'status' in 'where clause'
das passt nicht zu deinem Code im Originalposting.
Beachte bei allem was du tust, dass du mittels AS die Spalte umbenennst...
MfG
Rouven
Hi
Ungültige Abfrage: Unknown column 'status' in 'where clause'
das passt nicht zu deinem Code im Originalposting.
ja richtig sorry, mit 'status' ist eigentlich "test" gemeint wenn man das auf meinen Code im Originalposting beziehen will
Hi,
"test" ist ja nix anderes als das status Feld, oder?
Evtl. so?
SELECT *, (SELECT status FROM tabelle2 WHERE tabelle1.processingStatus = tabelle2.id AND status LIKE 'irgend eine Postvariable') AS test
FROM tabelle1
WHERE Feld1
LIKE 'irgend eine Postvariable'
Die Semantik der Abfrage wird mir nicht ganz klar, auch hab ich kein MySQL.
echo $begrüßung;
SELECT *, (SELECT status FROM tabelle2 WHERE tabelle1.processingStatus = tabelle2.id) AS test FROM
tabelle1 WHEREFeld1
LIKE 'irgend eine Postvariable' OR
test LIKE 'irgend eine Postvariable';
Ohne die letzte LIKE-Anweisung funktioniert die Abfrage eiwandfrei.
Ein WHERE interessiert sich nicht für Dinge, die in der SELECT-Klausel aufgeführt sind, da diese zum Zeitpunkt der WHERE-Auswertung noch nicht bekannt sind. In WHERE kann man deshalb nicht auf irgendwelche Aliasnamen oder dort berechnete Werte Bezug nehmen. Das WHERE filtert aus den FROM-Tabellen die Datensätze, die zur Ergebnismenge gehören sollen. Du kann nicht eher auf diese Ergebnismenge Bezug nehmen, als diese ermittelt wurde. Es gibt aber noch die HAVING-Klausel, die dann die gefilterte und berechnete Ergebnismenge noch einmal einschränken kann. MySQL beachtet HAVING auch dann, wenn kein GROUP BY verwendet wurde. Ein HAVING ist in der Lage, auf Daten und Metadaten der Ergebnismenge Bezug zu nehmen. Allerdings sollt man versuchen, die Einschränkung in das WHERE statt in ein HAVING aufzunehmen, denn für berechnete Werte gibt es keinen Index, den man verwenden könnte. Wenn ich mir deinen Fall genauer ansehe, denke ich, dass du die beiden Tabellen lieber mit einem JOIN verbinden solltest. Der findet ja in der FROM-Klausel statt und die WHERE-Klausel kann auf die dort "entstehenden" Felder (inklusive Alianamen der Tabellen) Bezug nehmen.
echo "$verabschiedung $name";
Hi,
ok vielen Dank für die ausführliche Info.
Ich werde versuchen deine Gedanken in die Praxis umzusetzen.
Wünscht mir Glück :-)
Gruß
Mika