Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datenbankabfrage über 2 Tabellen

Frage Entwicklung PHP

Mitglied: Matz80

Matz80 (Level 1) - Jetzt verbinden

28.09.2011 um 20:44 Uhr, 5286 Aufrufe, 8 Kommentare

Hey Leute,

ich habe ein kleine Problem und hoffe Ihr könnt mir helfen.

Gib es die Möglichkeit eine normale Datenbankabfrage über 2 Tabellen auszuführen? Also: "SELECT * FROM tabelle WHERE name LIKE '$name'"; Normale Abrage halt.,

"SELECT * FROM tabelle1, tabelle2 WHERE name LIKE '$name'";
Wär super klappt aber nicht!

Vielleicht habe ich das nicht ganz verstanden, aber:

Bei Inner Join müssen ja imemr die Where Bedingungen in den jeweiligen Tabellen sein Also: "SELECT T1.*, T2.* FROM tabelle1 T1, tabelle2 T2 WHERE T1.name = T2.name"; Ich habe aber eine variable die z.B. mit name übereinstimmen muss!

Bei UNION müssen Die (?Spaltentypen?) <- "bin mir nich sicher" und die Anzahl der abgefragten Spalten übereinstimmen Also: "SELECT name FROM tabelle1 WHERE name LIKE '$name' //Wenn ich jetzt name und id abfrage klappts nicht mehr! UNION SELECT name FROM tabelle2 WHERE name LIKE '$name'"; Ich brauche aber unterschiedliche Spalten und Anzahlen pro Tabelle.

Komm einfach nicht drauf! Hoffe Ihr versteht was ich meine und könnt mir helfen.

Besten Dank im vorraus!

Mif freundlichen Grüßen

Matz 80
Mitglied: EvilMoe
28.09.2011 um 20:55 Uhr
Hallo,

natürlich geht das.
01.
 SELECT * FROM tabelle1 as t1, tabelle2 as t2 WHERE t1.name = t2.name 
02.
 
EDIT: Du hast als Variable noch einen namen? Dann musste das so machen:
01.
 SELECT * FROM tabelle1 as t1, tabelle2 as t2 WHERE t1.name = t2.name AND t2.name = '$name'
Bitte warten ..
Mitglied: DuNDy21x
28.09.2011 um 21:06 Uhr
Kannst du mal die beiden Tabellen beispielhaft darstellen, je 1, 2 Datensätze?
Bitte warten ..
Mitglied: Matz80
28.09.2011 um 21:23 Uhr
Also vielleicht habe ich ja einen Denkfehler... aber:

Die beiden tabellen haben keinen Bezug zueinander, also klappt WHERE t1.name = t2.name ja nicht.
Müsste ja WHERE name = "$variable" sein oder?

@EvilMoe

Wenn ich jetzt WHERE t1.name = t2.name AND t2.name = " .$name. " schreibe, habe ich doch das gleiche Problem oder etwa nicht?
Da die tabellen keinen Bezug zueinander haben findet er doch bei der WHERE-Bedingung "t1.name = t2.name" schon nichts!?
Da bring mir doch AND t2.name = " .$name. " doch auch nix oder?

Zu dem Beispiel (doofes Beispiel :D)

Tabelle1 (z.B Festnetztelefone)

ID | name | Beschreibug | datum
50 | T500i | Beschreibung halt... | 29.08.2010

Tabelle2 (z.B. Handys)

ID | name | Beschreibung | datum
34 | k508 | Beschreibung halt... | 13.05.2011

*Die Tabellen haben keinen Bezug zueinander also WHERE t1.ID = t2.ID bringt mit nichts*

Ist eine Sucheingabe die mehrere Tabellen von Produkte suchen und sortiert nach Namen ausgeben soll, also die ganze Palette und nicht zur einen Bereich.
Bitte warten ..
Mitglied: EvilMoe
28.09.2011 um 21:37 Uhr
Dann müsste es doch so aussehen.
01.
SELECT * FROM tabelle1 as t1, tabelle2 as t2 WHERE t1.name = '$suche' OR t2.name = '$suche'
So sollte die Abfrage sein?
Bitte warten ..
Mitglied: DuNDy21x
28.09.2011 um 21:42 Uhr
Du könntest die beiden Tabellen per Union verknüpfen und dann eine Abfrage darum legen:

select X.* from (
select ID, name, Beschreibug, datum from Tabelle1
union
select ID, name, Beschreibug, datum from Tabelle2
) X where X.Name like " .$name. "

Damit solltest du dann aus beiden Tabellen alles bekommen bei dem Name der Variablen entspricht. Hierfür müssen jedoch die Tabellendefinitionen vom Typ her gleich sein, sonst müsstest du noch ein paar Umwandlungen durchführen.
Bitte warten ..
Mitglied: Matz80
28.09.2011 um 22:13 Uhr
@EvilMoe

Er gibt mir dabei immer den Fehler aus das die Spalte name mehrdeutig ist da sie ja in beiden vertreten ist.
Wenn ich es hingegen so probiere SELECT t1.*, t2.* FROM tabelle1 as t1, tabelle2 as t2 WHERE t1.name = '$suche' OR t2.name = '$suche'
gibt er mir die Anzahl der Reihen beider Tabellen aus, aber immer mir den Werten der zweiten Tabelle.

@DuNDy21x

Bekomme dabei immer den Fehler "Every derived table must have its own alias"
habs schon gegooglet aber nicht wirklich verstanden was der will!

Ergebnis:
SELECT num, nome FROM
(SELECT 0 as num, tema as nome FROM pesquisa) AS t1
LEFT JOIN
(SELECT COUNT(id) as num, tema as nome FROM pesquisa WHERE (YEAR(ano_defesa) = 0 OR 1=1) GROUP BY tema) As t2
On t1.num=t2.num

(habe kein konkretes Beispiel für UNION gefunden)

Mein Versuch:
select * from
(select ID, name, Beschreibug, datum from Tabelle 1) as t1
union
(select ID, name, Beschreibug, datum from Tabelle 2) as t2
where t1.name like " .$name. " //ohne t2. nur als versuch

klappt aber auch nicht!

Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as t2 where t1.name like '%$name%'' at line 4
Bitte warten ..
Mitglied: DuNDy21x
28.09.2011 um 22:32 Uhr
Habe oben den Quelltext mal etwas angepasst, da dieser nicht ganz passend war. ggf geht es damit.
Bitte warten ..
Mitglied: dog
28.09.2011 um 22:35 Uhr
Du machst hier was falsch!

Du kannst mit SQL nicht einfach 2 Tabellen zusammenwerfen, die keinen Bezug zueinander haben (SELECT * FROM t1,t2 ist übrigens ein Kreuzprodukt).
Du solltest lieber mehrere Abfragen hintereinander machen!

Ein syntaktisch korrektes UNION wäre übrigens:
01.
02.
	select  
03.
		id, fld1  
04.
	from 
05.
		tbl1 
06.
	where  
07.
		fld1 like 'a%' 
08.
09.
union 
10.
11.
	select  
12.
		id, fld1 
13.
	from  
14.
		tbl2 
15.
	WHERE   
16.
		fld1 like 'a%' 
17.
)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
CSS
gelöst CSS width in Outlook 2013 bei Tabellen ohne Funtion, warum? (3)

Frage von Pago159 zum Thema CSS ...

Microsoft Office
Excel Daten aus diversen Tabellen sammeln (9)

Frage von FitforLife zum Thema Microsoft Office ...

Microsoft Office
Excel 2010 - Zwei Tabellen vergleichen (Zugriffsprüfung) (2)

Frage von d4shoerncheN zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...