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 |
09.08.2007, 22:51:57
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 4
|
|
Unterabfrage und eine Tabelle
Guten,
Hab ein reines MySQL Verständnisproblem:
Unterabfrage funktioniert, wenn ich 2 Tabellen abfrage. Hab ich nur eine Tabelle, klappt das nicht mit Syntax Error.
Beispiel: table test:
id Name Hersteller
1 N1 H1
2 N2 H2
3 N3 H2
4 N4 H4
Finde alle Namen, die denselben Hersteller haben wie 'N2'. Also N2 und N3.
SELECT Name FROM test
WHERE Hersteller = (
SELECT Hersteller FROM test WHERE Name LIKE 'N2'
) ;
Fehler.
Hab einige wenige Muster für korrelierene querys mit echt nur einer Tabelle, bau ich die Syntax nach, kommt so was raus:
SELECT t1.Name
FROM test t1
WHERE t1.Hersteller = (
SELECT t2.Hersteller
FROM test t2
WHERE t2.Name like 'N2' ) ;
Liefert ebenfalls Syntax Error statt N2 N3.
Ist doch aber eine sehr einfache Aufgabe ?
|
09.08.2007, 23:02:06
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Unterabfrage und eine Tabelle
Deine Syntax ist vollkommen falsch und außerdem viel zu umständlich. das ganze muss so aussehen und sollte dann auch funktionieren.
PHP-Code:
<?php SELECT Name FROM test WHERE Hersteller ='H2'; ?>
Wenn du das mit dem Namen verbinden willst. Musst du erst den hersteller von N2 abfragen und dann alle Hersteller dieses Typs suchen.
PHP-Code:
<?php SELECT Hersteller FROM test WHERE Name ='N2'; /* gibt das Array Hersteller zurück */ SELECT Name FROM test WHERE Hersteller ='$array_Hersteller'; /* gibt das Array Name zurück */ ?>
Du solltest dich allerdings erst kurz mit MYSQL beschäftigen bevor du weiter machst.
MfG, Andy
Geändert von Socrates (09.08.2007 um 23:06:27 Uhr)
|
09.08.2007, 23:07:31
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Unterabfrage und eine Tabelle
du vergleichst eine spalte mit einer menge aus ergebnistupeln, das kann nur schief gehen.
vielleicht eher so:
SELECT Name FROM test
WHERE Hersteller IN (
SELECT Hersteller FROM test WHERE Name = 'N2'
) ;
und das nächste mal bitte die fehlermeldungen mitposten...
|
09.08.2007, 23:44:18
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 4
|
|
AW: Unterabfrage und eine Tabelle
Zitat:
Zitat von Socrates
Du solltest dich allerdings erst kurz mit MYSQL beschäftigen bevor du weiter machst
|
MySQL kann kein PHP. Solltest du wissen, wenn du dich schon so lange mit MySQL beschäftigst. Hab mich übrigens mit SQL beschäftigt, als es dich noch nicht gab.
Zitat:
Zitat von feuervogel
du vergleichst eine spalte mit einer menge aus ergebnistupeln, das kann nur schief gehen.
|
Du tust dasselbe. Ist das Prinzip an der Unterabfrage. Muss man eben nur dafür sorgen, dass Anzahl der Spalten gleich Anzahl der Elemente der Menge.
Fehlermeldung ist dieselbe wie nach deiner Abfrage:
#1064 syntax error near 'SELECT Hersteller FROM test
auf MySQL 4 und 5.
|
10.08.2007, 01:22:16
|
|
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Unterabfrage und eine Tabelle
Abend!
Zitat:
Zitat von Morgan
MySQL kann kein PHP. Solltest du wissen, wenn du dich schon so lange mit MySQL beschäftigst. Hab mich übrigens mit SQL beschäftigt, als es dich noch nicht gab.
|
Diesen Einwurf muss man jetzt aber nicht verstehen? Oder?
Beziehst du dich dabei auf die Variable, die ich in meinem Code verwendet habe. Oder auf die Aussage, dass die MySQL-Abfrage ein Array zurückgiebt? Lese dir zu MySQL und PHP mal lieber das durch, denn wenn du dich so lange damit beschäftigt hättest, würdest du bei dir auf dem Monitor bestimmt keine Fehlermeldung lesen! Der Beitrag zu MySQL wurde von dem Herrn feuervogel verfasst.
MfG, Andy
Geändert von Socrates (10.08.2007 um 01:37:10 Uhr)
|
11.08.2007, 13:03:42
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 4
|
|
AW: Unterabfrage und eine Tabelle
MySQL kann kein PHP. Du sollst also kein PHP benutzen.
Ist schon klar, dass das passiert. Du schreibst PHP. Immer, wenn du eine Abfrage nicht formulieren kannst. stellst du eine vorbereitende query, liest das Ergebnis in ein PHP Array, bastelst daran herum und stellst weitere Abfragen. Bis das Ergebnis zusammengefrickelt ist. Das ist hier nicht die Aufgabe.
Ist es zu kompliziert ? Einfacheres Beispiel:
TABLE ort:
id1 ort1
1 o1
2 o2
3 o3
4 o3
5 o5
Um den Einwand vom Feuevogel erst einmal nicht berücksichtigen zu müssen, erklären wir id1 zum Primärschlüssel.
Aufgabe: Liefere mit EINER query alle id1 von ort, die denselben Wert von `ort1` tragen wie id1=3.
Geändert von Morgan (11.08.2007 um 13:13:18 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 07:38:57 Uhr.
|