Multiple Tabellenabfrage

Brody

Mitglied
Guten Tag online,

ich habe hier schon einiges an Informationen gelesen, jedoch passt das noch nicht so ganz zu meinem Vorhaben.
Bitte gestattet mir diese Frage:

Ich habe eine SQL Datenbank "ipdata". Die hat (zurzeit) zwei Tabellen "2003" und "2004". Jede hat die folgenden Spalten "Datum", "Uhrzeit", "Name", "Alias", "Site".
Ich versuche folgendes zu realisieren: Der User soll Abfragen können, zb "alle ips des namens, egal ob 2003 und/oder 2004", sodann soll das Ergebnis in einer Tabelle ausgewiesen werden, die er dann noch filtern kann, zb "von denen zeig mir nur die, die mit ip xxx beginnen"

Ich hoffe ich habe das einigermassen deutlich rübergebracht. Ich bin da technisch absolut nicht fit.
Ist das zu realisieren und wie?

Danke vorab
Brody
 
ich glaube:

SELECT * from 2003, 2004 WHERE Name IS IN ('IP_Nummer%');

So ungefähr ?! Das Prozentzeichen ist imho sone Art Wildcard ..
 
hi online,
danke für die schnelle Antwort. So sieht meine php zurzeit aus:

<?
$dbhost="localhost";
$dbuser="user";
$dbpass="pass";
$dbname="ipdata";
$dbtable="2003,2004";
$connect = mysql_connect("localhost", $dbuser, $dbpass, $dbname)
SELECT * from 2003, 2004 WHERE Name IS IN ('IP_Nummer%');
?>

und DAS ist die Fehlermeldung dann:
Parse error: parse error, unexpected T_STRING in D:\xampp\htdocs\5.php on line 8

Ich möchte es so gestalten, dass ein User praktisch eine Eingabemaske hat, aus der er seine Kategorie wählt (Name, IP, DATUM) und dann die spezifische Eingabe tippt. Das Ergebnis soll aufpoppen oder einfach nur angezeigt werden, so dass er aus dem Ergebnis dann noch filtern kann ("von denen zeig mir alle nur aus 2003, oder so)
 
ähm ja .. hab im nachhinein gemerkt, dass ich was falsches erzählt habe:

Es muss eher heissen:

SELECT * from 2003, 2004 WHERE Name LIKE ('IP_Nummer%');

Kann es leider momentan nicht ausprobieren ..
 
Nein, bitte keine Sorgen machen, ich freu mich über jede Hilfe.

Also das bekomme ich bei Aufruf der php angezeigt:
"Parse error: parse error, unexpected T_STRING in D:\xampp\htdocs\5.php on line 8"

Und das ist in der Datei:
<?
$dbhost="localhost";
$dbuser="Brody";
$dbpass="bossadmin";
$dbname="ipdata";
$dbtable="2003,2004";
$connect = mysql_connect($dbhost, $dbuser, $dbpass, $dbname)
SELECT * from 2003, 2004 WHERE Name LIKE ('IP_Nummer%');
?>

Ich habe jetzt mal die absoluten Werte genommen. Verstehe ich das richtg, daß (wenns funktionieren würde), ich eine Eingabemaske angezeigt bekommen würde, in der ich dann die IP eingebe und das Ergebnis liefert mir die Namen dazu aus, ja?
Wie könnte ich dann das alles noch Variieren, zb.
Suche nach IP
Suceh nach Name
Suche nach Alias
Suche nach Datum
 
Du kannst die Tabellen so nicht durchsuchen. Da jetzt aus der Tabelle 2003 und 2004 alle Datensätze verknüpft werden.

Ich nehme an, Du willst über alle Zeilen suchen, egal, ob aus 2003 oder 2004. Dann überlege Dir entweder in eine der Tabellen noch eine Spalte Jahr einzubauen und 2003 bzw. 2004 einzutragen. Was sich dann im nächsten Jahr noch leichter benutzen lässt

oder

du musst das UNION Statement benutzen, um die beiden Tabellen quasi zu "einer" zusammenzukleben ;)

PHP:
Select * from 2003
union all
select * from 2004
So geht das glaube ich. Sonst guck nochmal im der Doku.


Der Fehler in deinem PHP-Script. Dir fehlt in der vorletzten Dode-Zeile ein Semikolon. Und das SQL Script hat da so nicht das geringste zu suchen.
 
danke schön.

ich habe die tabellen tatsächlich so:

year|name|ip|alias|apache

kann ichs so machen?
 
Geht nicht, Geht nicht, Geht nicht.

Egal, ob ich SELECT mit oder ohne $ setzte,
Egal ob ich 2003 mit oder ohne ", ' , ` setzte,
Egal ob ich 2004 mit oder ohne ", ', ` setzte.

Gott im Himmel, ich will nix weiter als meine Kunden diesen Datenbank Service bieten. Was ist denn jetzt noch verkehrt?
 
Also wenn ich das richtig sehe, hast du immer zwei Kriterien, erst nach name suchen, dann nach ip suchen.
Wenn Du zwei Tabelllen verwendest, dann waere das folgende Abfrage:

SELECT * FROM IPDATA_2003
WHERE name = 'paul'
and ip LIKE ('100.%')
UNION ALL
SELECT * FROM IPDATA_2004
WHERE name='paul'
and ip LIKE ('100.%')

Hier wird in beiden Tabellen nach Paul UND allen ip's die mit 100. beginnen gesucht.

Wenn du eine Tabelle verwendest:

SELECT * FROM IPDATA
WHERE name = 'paul'
and ip LIKE ('100.%')

Wenn du alle namen mit ip beginnend mit 100. willst:

SELECT * FROM IPDATA
WHERE name LIKE '%'
and ip LIKE ('100.%')
 
Zurück